Encodeur vidéo Microsoft MPEG-2
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est 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.]
Le filtre Microsoft MPEG-2 Video Encoder encode la vidéo MPEG-2 et MPEG-1.
Pour encoder et multiplexer des flux audio/vidéo, utilisez le filtre Encodeur Microsoft MPEG-2 , qui encapsule les fonctions de ce filtre et du filtre Microsoft MPEG-2 Audio Encoder .
Notes
Ce filtre n’est pas pris en charge sur les plateformes IA-64.
Filtrer les informations
Interfaces de filtre
IBaseFilter
ICodecAPI
IEncoderAPI
IMediaSeeking
IVideoEncoder
Types de média pin d’entrée
MEDIATYPE_Video, MEDIASUBTYPE_I420
MEDIATYPE_Video, MEDIASUBTYPE_IYUV
MEDIATYPE_Video, MEDIASUBTYPE_RGB24
MEDIATYPE_Video, MEDIASUBTYPE_UYVY
MEDIATYPE_Video, MEDIASUBTYPE_YUY2
MEDIATYPE_Video, MEDIASUBTYPE_YV12
Interfaces de broche d’entrée
IMemInputPin
Ipin
IQualityControl
Types de supports pin de sortie
MEDIATYPE_Stream, MEDIASUBTYPE_MPEG2_VIDEO
MEDIATYPE_Stream, MEDIASUBTYPE_MPEG2_PROGRAM
MEDIATYPE_Stream, MEDIASUBTYPE_MPEG2_TRANSPORT
MEDIATYPE_Video, MEDIASUBTYPE_MPEG2_VIDEO
Interfaces pin de sortie
IMediaSeeking
Ipin
IQualityControl
Filtrer le CLSID
CLSID_CMPEG2EncoderVideoDS (déclaré dans wmcodecdsp.h)
Exécutable
msmpeg2enc.dll
MERIT_DO_NOT_USE
CLSID_LegacyAmFilterCategory
Notes
L’encodeur vidéo MPEG-2 peut produire les types de sortie suivants :
- Flux élémentaire vidéo
- Vidéo dans un flux de programme MPEG-2
- Vidéo dans un flux de transport MPEG-2
Il prend en charge les profils et niveaux MPEG-2 suivants :
Profil | Niveaux | Notes |
---|---|---|
Profil simple | Principal | |
Profil Main | Low, Main, High, High-1440 | |
Profil élevé | Main, High, High-1440 | Aucune scalabilité ou prise en charge 4:2:2/4:4:4 (seulement 4:2:0) |
Profil 4:2:2 | Main, High | Aucune scalabilité ou prise en charge 4:2:2 (seulement 4:2:0) |
Propriétés du codec
Le filtre prend en charge les propriétés suivantes via ICodecAPI.
Propriété | Default | Valeurs prises en charge |
---|---|---|
AVEncCodecType | Vidéo MPEG-2 |
CODECAPI_GUID_AVEncMPEG1Video CODECAPI_GUID_AVEncMPEG2Video |
AVEncCommonBufferInLevel | 12222464 bits | |
AVEncCommonBufferOutLevel | 12222464 bits | |
AVEncCommonBufferSize | 12222464 bits | |
AVEncCommonFormatConstraint | Non spécifié |
CODECAPI_GUID_AVEncCommonFormatUnSpecified (Aucune contrainte de format) CODECAPI_GUID_AVEncCommonFormatDVD_V (DVD-Vidéo) CODECAPI_GUID_AVEncCommonFormatVCD (CD vidéo) |
AVEncCommonMaxBitRate | 9800000 (9,8 Mbits/seconde) | |
AVEncCommonMeanBitRate | 70000000 (7,0 Mbits/seconde) | |
AVEncCommonMinBitRate | 128 | |
AVEncCommonMultipassMode | 1 | 1 |
AVEncCommonQuality | 100 | 1 — 100 |
AVEncCommonQualityVsSpeed | 75 | 0 — 100 |
AVEncCommonRateControlMode | CBR |
eAVEncCommonRateControlMode_CBR eAVEncCommonRateControlMode_PeakConstrainedVBR eAVEncCommonRateControlMode_Quality |
AVEncInputVideoSystem | Non spécifié | eAVEncInputVideoSystem_Unspecified eAVEncInputVideoSystem_PAL eAVEncInputVideoSystem_NTSC |
AVEncMPVDefaultBPictureCount | 2 | 0 — 2 |
AVEncMPVFrameFieldMode | Mode Frame | |
AVEncMPVGenerateHeaderSeqDispExt | TRUE | |
AVEncMPVGenerateHeaderSeqExt | TRUE | |
AVEncMPVGOPOpen | FALSE | |
AVEncMPVGOPSInSeq | 1 | 0 — 1 |
AVEncMPVGOPSize | 18 images (36 champs) pour NTSC ; 15 images (30 champs) dans le cas contraire. | 1 — 30; voir Remarques |
AVEncMPVIntraDCPrecision | 9 | 8 — 10 |
AVEncMPVLevel | Élevé | |
AVEncMPVProfile | Principal | |
AVEncVideoDefaultUpperFieldDominant | TRUE | |
AVEncVideoForceSourceScanType | Interlaced |
eAVEncVideoSourceScan_Interlaced eAVEncVideoSourceScan_Progressive |
AVEncVideoInputChromaResolution | 4:2:0 |
eAVEncVideoChromaResolution_420 (4:2:0) eAVEncVideoChromaResolution_SameAsSource |
AVEncVideoInputChromaSubsampling | Identique à la source | |
AVEncVideoInputColorNominalRange | Identique à la source | |
AVEncVideoInputColorPrimaries | Identique à la source | |
AVEncVideoInputColorTransferFunction | Identique à la source | |
AVEncVideoInputColorTransferMatrix | Identique à la source | |
AVEncVideoMaxKeyframeDistance | AVEncMPVGOPSize - 1 | 0 ou AVEncMPVGOPSize - 1 |
AVEncVideoNoOfFieldsToEncode | 0 | |
AVEncVideoOutputChromaResolution | 4:2:0 |
eAVEncVideoChromaResolution_420 (4:2:0) eAVEncVideoChromaResolution_SameAsSource |
AVEncVideoOutputFrameRate | Doit être identique à la fréquence d’images d’entrée. | |
AVEncVideoOutputScanType | Comme dans l’entrée | eAVEncVideoOutputScan_SameAsInput |
AVEncVideoPixelAspectRatio | 1:1 |
Il est recommandé de définir les propriétés dans l’ordre suivant :
Définissez les propriétés restantes dans n’importe quel ordre. (Toutefois, consultez Structure GOP.)
Il est possible de définir des propriétés pendant l’exécution du graphique de filtre. Il existe un délai d’au moins un goP avant que les nouveaux paramètres ne prennent effet.
Opération d’encodeur
Lors de l’encodage d’une vidéo MPEG-1, l’encodeur définit automatiquement le code constrained_parameters_flag 1 bits dans l’en-tête de séquence si toutes les contraintes sont remplies.
Si nécessaire, l’encodeur arrondit les dimensions vidéo d’entrée afin que les dimensions vidéo de sortie correspondent aux exigences MPEG. Pour la vidéo progressive, les dimensions de sortie sont arrondies à un multiple de 16 en largeur et en hauteur. Pour la vidéo entrelacée, la largeur est arrondie à un multiple de 16, et la hauteur est arrondie à un multiple de 32. Cette opération d’arrondi utilise le remplissage en fonction des besoins.
Si la vidéo est entrelacée, l’encodeur effectue la détection automatique de la télécine (3:2 pull-down). La vidéo d’entrée peut contenir des paires d’images de champ, en plus des images entrelacées.
Le format interne de l’encodeur est 4:2:0 IYUV (identique à I420). Il peut effectuer une conversion de couleur à partir des formats vidéo YUY2, YV12, UYVY et RVB-24.
Pour limiter le flux de bits à un format cible (DVD ou VCD), définissez la propriété AVEncCommonFormatConstraint . Si cette propriété a une valeur autre que GUID_AVEncCommonFormatUnSpecified, l’encodeur limite la syntaxe MPEG à celle autorisée par le format cible.
Pour l’encodage en direct, définissez la propriété AVEncCommonQualityVsSpeed sur zéro. Cela entraîne l’optimisation de la vitesse de l’encodeur.
Modes d’encodage
L’encodeur prend en charge plusieurs modes d’encodage :
- Vitesse de transmission constante (CBR) d’une passe.
- Taux de transmission variable (VBR) basé sur la qualité en une seule passe à l’aide d’une taille d’étape de quantiseur constant. Dans ce mode, l’encodeur tente d’atteindre un niveau de qualité cible, jusqu’à un débit maximal.
- VBR avec contrainte de pointe en une seule passe. Dans ce mode, l’encodeur tente d’atteindre un débit binaire moyen cible dans certaines limites internes.
Pour configurer le mode d’encodage, définissez les propriétés suivantes :
Mode | Propriétés |
---|---|
CBR |
AVEncCommonRateControlMode = eAVEncCommonRateControlMode_CBR AVEncCommonQualityVsSpeed AVEncCommonMeanBitRate |
VBR basé sur la qualité |
AVEncCommonRateControlMode = eAVEncCommonRateControlMode_Quality AVEncCommonQuality AVEncCommonMaxBitRate Note: Dans ce mode, les propriétés AVEncCommonMeanBitRate et AVEncCommonMinBitRate ne sont pas utilisées. Le débit binaire minimal est supposé être égal à zéro. |
VBR limité par les pics |
AVEncCommonRateControlMode = eAVEncCommonRateControlMode_PeakConstrainedVBR AVEncCommonMultipassMode = 1 AVEncCommonMinBitRate AVEncCommonMaxBitRate AVEncCommonMeanBitRate |
Notes
Le VBR à deux pas n’est pas pris en charge.
Proportions
Les proportions d’affichage et les proportions de pixels (PAR) sont liées par la formule suivante :
- Format d’affichage = par × (largeur de l’image/hauteur de l’image)
L’encodeur utilise cette formule pour calculer la valeur de pel_aspect_ratio pour les flux mpeg-1 bits ou aspect_ratio_information pour les flux MPEG-2 bits. (Voir RESPECTIVEment ISO/IEC 11172 et ISO/IEC 138181-2.)
L’encodeur tente les paramètres suivants, dans l’ordre :
- Si l’application définit la propriété AVEncVideoPixelAspectRatio à tout moment avant l’exécution du graphe de filtre, cette propriété est utilisée pour la par.
- Sinon, si les membres dwPictAspectRatioX et dwPictAspectRatioY de la structure VIDEOINFOHEADER2 ne sont pas zéro, ces membres sont utilisés pour le rapport d’aspect d’affichage, et le par est calculé à partir du rapport d’aspect d’affichage.
- Si aucune de ces valeurs n’est présente, le par est supposé être 1.0 et le rapport d’aspect d’affichage est calculé en conséquence.
En mode d’encodage dynamique (AVEncCommonQualityVsSpeed égal à zéro), le rapport d’aspect d’affichage doit être 4:3 ou 16:9, avec une valeur par défaut de 4:3. Si le rapport d’aspect d’affichage calculé n’est pas 4:3 ou 16:9, l’encodeur utilise la valeur 4:3.
GOP Structure
Pour spécifier le groupe de structure d’images (GOP), définissez les propriétés suivantes dans l’ordre :
En fonction de ces paramètres, l’encodeur produit l’une des structures GOP suivantes :
AVEncVideoMaxKeyframeDistance | AVEncMPVDefaultBPictureCount | GOP Structure |
---|---|---|
0 | 0 | IIII... |
AVEncMPVGOPSize - 1 | 0 | PPPA... |
AVEncMPVGOPSize - 1 | 1 | IBPBP... |
AVEncMPVGOPSize - 1 | 2 | IBBPBBP... |
La structure goP par défaut est IBBPBBP... avec une taille de goP de 15 images.
Si l’application contraint le format cible sur DVD (via la propriété AVEncCommonFormatConstraint ) et définit la propriété AVEncInputVideoSystem sur NTSC ou PAL, l’encodeur prend en charge les tailles de GOP suivantes :
Système vidéo | Tailles de goP valides | Taille du goP par défaut |
---|---|---|
NTSC | 1-18 | 18 (36 champs) |
PAL | 1-15 | 15 (30 champs) |
Listes de modifications de propriété de codec
La définition de la valeur d’une propriété de codec peut modifier la plage valide d’une autre propriété. (Par exemple, la contrainte du format cible limite le débit binaire moyen.) Chaque fois que l’application définit une propriété, l’encodeur vérifie si d’autres propriétés se trouvent désormais en dehors de leur plage valide. Si c’est le cas, l’encodeur réinitialise cette propriété à sa nouvelle valeur par défaut. Pour recevoir des notifications lorsque cela se produit, procédez comme suit :
- Appelez ICodecAPI::RegisterForEvent avec la valeur CODECAPI_CHANGELISTS.
- Utilisez l’interface IMediaEventEx pour surveiller les événements à partir du graphique de filtre.
- Si la plage ou la valeur par défaut d’une propriété change, l’encodeur envoie un événement EC_CODECAPI_EVENT avec une liste de propriétés modifiées.
Prise en charge d’IEncoderAPI
Pour la compatibilité descendante, le filtre prend en charge les propriétés suivantes via l’interface IEncoderAPI :
Propriété | Description |
---|---|
ENCAPIPARAM_BITRATE | Équivalent à AVEncCommonMeanBitRate. |
ENCAPIPARAM_PEAK_BITRATE | Équivalent à AVEncCommonMaxBitRate. |
ENCAPIPARAM_BITRATE_MODE | Équivalent à AVEncCommonRateControlMode. |
Lorsque vous définissez la propriété ENCAPIPARAM_BITRATE_MODE , les valeurs sont mappées comme suit :
ENCAPIPARAM_BITRATE_MODE | AVEncCommonRateControlMode |
---|---|
ConstantBitRate | eAVEncCommonRateControlMode_CBR |
VariableBitRateAverage | Consultez Remarque. |
VariableBitRatePeak | eAVEncCommonRateControlMode_PeakConstrainedVBR |
Notes
Actuellement, l’encodeur vidéo MPEG-2 ne prend pas en charge le mode d’encodage VariableBitRateAverage . Si vous définissez cette valeur, l’encodeur utilise par défaut l’encodage CBR (eAVEncCommonRateControlMode_CBR).
Lors de l’obtention de la propriété ENCAPIPARAM_BITRATE_MODE , les valeurs sont mappées comme suit :
AVEncCommonRateControlMode | ENCAPIPARAM_BITRATE_MODE |
---|---|
eAVEncCommonRateControlMode_CBR | ConstantBitRate |
eAVEncCommonRateControlMode_Quality | VariableBitRatePeak |
eAVEncCommonRateControlMode_PeakConstrainedVBR | VariableBitRatePeak |
Limites
Actuellement, l’encodeur ne prend pas en charge les fonctionnalités suivantes :
- Génération de paquets de flux élémentaire (PES) paquets.
- Conversion de fréquence d’images. Le flux d’entrée doit avoir une fréquence d’images valide pour un flux de bits MPEG-2.
- Extensions de fréquence d’images pour MPEG-2 (frame_rate_extension_n, frame_rate_extension_d).
- Positions de la mémoire tampon d’entrée/sortie (VBV) pour un clip.
- Insertion de données de ligne 21 (informations de sous-titres) dans le flux élémentaire vidéo.
- Définition du champ time_code 25 bits dans l’en-tête GOP pour MPEG-2.
- Filtre denoise.
- Gestion des droits numériques (DRM).
L’encodeur introduit une latence d’encodage d’au moins un GOP.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows Vista Famille Premium, Windows Vista Édition Intégrale, Windows 7 Famille Premium, Windows 7 Professionnel, Windows 7 Entreprise, Windows 7 Édition Intégrale [applications de bureau uniquement] |
Serveur minimal pris en charge |
Aucun pris en charge |
En-tête |
|
Voir aussi