Utilisation du détecteur de média
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
[Cette API n’est pas prise en charge et peut être modifiée ou indisponible à l’avenir.]
Le détecteur de média est un objet d’assistance qui peut récupérer des informations sur un fichier, telles que le nombre de flux, leur type et leur durée. Il contient également des méthodes permettant de récupérer des images d’affiche à partir d’un flux vidéo. Il expose l’interface IMediaDet .
Le détecteur de média fonctionne dans l’un des deux modes. Lorsque vous créez un instance du détecteur de média, il n’est pas attaché à un fichier source particulier. Dans ce mode, vous pouvez récupérer des informations de flux à partir de plusieurs fichiers sources. Toutefois, une fois que vous utilisez le détecteur multimédia pour obtenir un cadre d’affiche, il passe en mode de saisie bitmap. En mode de capture bitmap, le détecteur de média est attaché à un flux vidéo spécifique, et les méthodes d’informations de flux ne fonctionnent plus. De plus, il n’existe aucun moyen de remettre le détecteur de média en mode de départ. Par conséquent, obtenez toutes les informations de flux dont vous avez besoin avant de récupérer des cadres d’affiche, ou créez de nouvelles instances du détecteur de média pour chaque flux.
Pour obtenir des informations de flux, procédez comme suit :
- Appelez IMediaDet::p ut_Filename avec le nom du fichier source.
- Appelez IMediaDet::get_OutputStreams pour obtenir le nombre de flux dans la source.
- Spécifiez un numéro de flux avec IMediaDet::p ut_CurrentStream. Appelez ensuite une ou plusieurs des méthodes suivantes :
- IMediaDet::get_StreamType : récupère le type de média du flux.
- IMediaDet::get_StreamLength : récupère la durée du flux.
- IMediaDet::get_FrameRate : récupère la fréquence d’images d’un flux vidéo.
Pour obtenir un cadre d’affiche, spécifiez le numéro de flux, comme à l’étape précédente. Appelez ensuite IMediaDet::GetBitmapBits, qui copie un cadre d’affiche dans une mémoire tampon, ou IMediaDet::WriteBitmapBits, qui enregistre un cadre d’affiche dans un fichier.
Rubriques connexes