Microsoft MPEG-2 視訊編碼器
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
Microsoft MPEG-2 視訊編碼器篩選器會編碼 MPEG-2 和 MPEG-1 視訊。
若要編碼和多工音訊/視訊串流,請使用 Microsoft MPEG-2 編碼器 篩選器,其封裝此篩選器和 Microsoft MPEG-2 音訊編碼器 篩選器的功能。
注意
IA-64 型平臺不支援此篩選。
篩選資訊
篩選介面
IBaseFilter
ICodecAPI
IEncoderAPI
IMediaSeeking
IVideoEncoder
輸入釘選媒體類型
MEDIATYPE_Video, MEDIASUBTYPE_I420
MEDIATYPE_Video, MEDIASUBTYPE_IYUV
MEDIATYPE_Video, MEDIASUBTYPE_RGB24
MEDIATYPE_Video, MEDIASUBTYPE_UYVY
MEDIATYPE_Video, MEDIASUBTYPE_YUY2
MEDIATYPE_Video, MEDIASUBTYPE_YV12
輸入針腳介面
IMemInputPin
IPin
IQualityControl
輸出釘選媒體類型
MEDIATYPE_Stream, MEDIASUBTYPE_MPEG2_VIDEO
MEDIATYPE_Stream, MEDIASUBTYPE_MPEG2_PROGRAM
MEDIATYPE_Stream, MEDIASUBTYPE_MPEG2_TRANSPORT
MEDIATYPE_Video, MEDIASUBTYPE_MPEG2_VIDEO
輸出針腳介面
IMediaSeeking
IPin
IQualityControl
篩選 CLSID
在 wmcodecdsp.h) 中宣告的CLSID_CMPEG2EncoderVideoDS (
可執行檔
msmpeg2enc.dll
MERIT_DO_NOT_USE
CLSID_LegacyAmFilterCategory
備註
MPEG-2 視訊編碼器可以產生下列類型的輸出:
- 影片基本串流
- MPEG-2 程式資料流程中的影片
- MPEG-2 傳輸資料流程中的視訊
它支援下列 MPEG-2 設定檔和層級:
設定檔 | 等級 | 備註 |
---|---|---|
簡單設定檔 | 主要區段 | |
主要設定檔 | 低、主要、高、高-1440 | |
高調明確 | 主要、高、高-1440 | 沒有延展性或 4:2:2/4:4:4 僅支援 (4:2:0) |
4:2:2 設定檔 | 主要、高 | 沒有延展性或 4:2:2 僅支援 (4:2:0) |
編解碼器屬性
篩選準則透過 ICodecAPI支援下列屬性。
屬性 | 預設 | 支援的值 |
---|---|---|
AVEncCodecType | MPEG-2 影片 |
CODECAPI_GUID_AVEncMPEG1Video CODECAPI_GUID_AVEncMPEG2Video |
AVEncCommonBufferInLevel | 12222464位 | |
AVEncCommonBufferOutLevel | 12222464位 | |
AVEncCommonBufferSize | 12222464位 | |
AVEncCommonFormatConstraint | [未指定] |
CODECAPI_GUID_AVEncCommonFormatUnSpecified (沒有格式條件約束) CODECAPI_GUID_AVEncCommonFormatDVD_V (DVD-Video) CODECAPI_GUID_AVEncCommonFormatVCD (視訊 CD) |
AVEncCommonMaxBitRate | 9800000 (9.8 Mbits/秒) | |
AVEncCommonMeanBitRate | 7000000 (7.0 Mbits/秒) | |
AVEncCommonMinBitRate | 128 | |
AVEncCommonMultipassMode | 1 | 1 |
AVEncCommonQuality | 100 | 1 — 100 |
AVEncCommonQualityVsSpeed | 75 | 0 — 100 |
AVEncCommonRateControlMode | Cbr |
eAVEncCommonRateControlMode_CBR eAVEncCommonRateControlMode_PeakConstrainedVBR eAVEncCommonRateControlMode_Quality |
AVEncInputVideoSystem | [未指定] | eAVEncInputVideoSystem_Unspecified eAVEncInputVideoSystem_PAL eAVEncInputVideoSystem_NTSC |
AVEncMPVDefaultBPictureCount | 2 | 0 — 2 |
AVEncMPVFrameFieldMode | 畫面模式 | |
AVEncMPVGenerateHeaderSeqDispExt | TRUE | |
AVEncMPVGenerateHeaderSeqExt | TRUE | |
AVEncMPVGOPOpen | FALSE | |
AVEncMPVGOPSInSeq | 1 | 0 — 1 |
AVEncMPVGOPSize | NTSC) 18 個畫面格 (36 個欄位;否則, (30 個欄位) 15 個畫面格。 | 1 — 30;請參閱備註 |
AVEncMPVIntraDCPrecision | 9 | 8 — 10 |
AVEncMPVLevel | 高 | |
AVEncMPVProfile | 主要區段 | |
AVEncVideoDefaultUpperFieldDominant | TRUE | |
AVEncVideoForceSourceScanType | Interlaced |
eAVEncVideoSourceScan_Interlaced eAVEncVideoSourceScan_Progressive |
AVEncVideoInputChromaResolution | 4:2:0 |
eAVEncVideoChromaResolution_420 (4:2:0) eAVEncVideoChromaResolution_SameAsSource |
AVEncVideoInputChromaSubsampling | 與來源相同 | |
AVEncVideoInputColorNominalRange | 與來源相同 | |
AVEncVideoInputColorPrimaries | 與來源相同 | |
AVEncVideoInputColorTransferFunction | 與來源相同 | |
AVEncVideoInputColorTransferMatrix | 與來源相同 | |
AVEncVideoMaxKeyframeDistance | AVEncMPVGOPSize - 1 | 0 或 AVEncMPVGOPSize - 1 |
AVEncVideoNoOfFieldsToEncode | 0 | |
AVEncVideoOutputChromaResolution | 4:2:0 |
eAVEncVideoChromaResolution_420 (4:2:0) eAVEncVideoChromaResolution_SameAsSource |
AVEncVideoOutputFrameRate | 必須與輸入畫面播放速率相同。 | |
AVEncVideoOutputScanType | 與輸入相同 | eAVEncVideoOutputScan_SameAsInput |
AVEncVideoPixelAspectRatio | 1:1 |
建議依照下列順序設定屬性:
依任何順序設定其餘屬性。 不過, (請參閱 GOP Structure.)
在篩選圖表執行時,可以設定屬性。 在新的設定生效之前,至少有一個 GOP 延遲。
編碼器作業
編碼 MPEG-1 視訊時,如果符合所有條件約束,編碼器會自動設定序列標頭中的 1 位 constrained_parameters_flag 程式碼。
如有需要,編碼器會四捨五入輸入視訊維度,讓輸出視訊維度符合 MPEG 需求。 針對漸進式視訊,輸出維度會四捨五入為寬度和高度的 16 倍數。 對於交錯式視訊,寬度會四捨五入為 16 的倍數,高度會四捨五入為 32 的倍數。 此進位作業會視需要使用填補。
如果視訊交錯,編碼器會執行自動遠端 (3:2 下拉式) 偵測。 除了交錯畫面之外,輸入視訊還可以包含欄位圖片組。
編碼器的內部格式為 4:2:0 IYUV (與 I420) 相同。 它可以從 YUY2、YV12、UYVY 和 RGB-24 視訊格式執行色彩轉換。
若要將 bitstream 限制為 (DVD 或 VCD) 的目標格式,請設定 AVEncCommonFormatConstraint 屬性。 如果此屬性具有 GUID_AVEncCommonFormatUnSpecified以外的值,編碼器會將目標格式所允許的 MPEG 語法限制為 。
針對即時編碼,請將 AVEncCommonQualityVsSpeed 屬性設定為零。 這會導致編碼器優化速度。
編碼模式
編碼器支援數種編碼模式:
- CBR) (單次常數位元速率。
- 使用常數量化步驟大小, (VBR) 的單次品質型變數位元速率。 在此模式中,編碼器會嘗試符合目標品質等級,最多達到最大位元速率。
- 單次尖峰限制 VBR。 在此模式中,編碼器會嘗試在特定內部限制內達到目標平均位元速率。
若要設定編碼模式,請設定下列屬性:
[模式] | 屬性 |
---|---|
Cbr |
AVEncCommonRateControlMode = eAVEncCommonRateControlMode_CBR AVEncCommonQualityVsSpeed AVEncCommonMeanBitRate |
以品質為基礎的 VBR |
AVEncCommonRateControlMode = eAVEncCommonRateControlMode_Quality AVEncCommonQuality AVEncCommonMaxBitRate 注意: 在此模式中,不會使用 AVEncCommonMeanBitRate 和 AVEncCommonMinBitRate 屬性。 最小位元速率假設為零。 |
尖峰限制 VBR |
AVEncCommonRateControlMode = eAVEncCommonRateControlMode_PeakConstrainedVBR AVEncCommonMultipassMode = 1 AVEncCommonMinBitRate AVEncCommonMaxBitRate AVEncCommonMeanBitRate |
注意
不支援雙階段 VBR。
外觀比例
(PAR) 的顯示外觀比例和圖元外觀比例與下列公式相關:
- 顯示外觀比例 = PAR × (圖片寬度/圖片高度)
編碼器會使用此公式來計算 MPEG-1 位資料流程的pel_aspect_ratio值,或針對 MPEG-2 位資料流程計算aspect_ratio_information值。 (分別參閱 ISO/IEC 11172 和 ISO/IEC 138181-2。)
編碼器會依序嘗試下列設定:
- 如果應用程式在篩選圖形執行之前,隨時設定 AVEncVideoPixelAspectRatio 屬性,則會將此屬性用於 PAR。
- 否則,如果VIDEOINFOHEADER2結構的dwPictAspectRatioX和dwPictAspectRatioY成員為非零,這些成員會用於顯示外觀比例,而且會從顯示外觀比例計算 PAR。
- 如果沒有這些值,則會假設 PAR 為 1.0,並據以計算顯示外觀比例。
在即時編碼模式 (AVEncCommonQualityVsSpeed 等於零) ,顯示外觀比例必須是 4:3 或 16:9,預設值為 4:3。 如果計算的顯示外觀比例不是 4:3 或 16:9,編碼器會使用值 4:3。
GOP 結構
若要指定圖片群組 (GOP) 結構,請依序設定下列屬性:
根據這些設定,編碼器會產生下列其中一個 GOP 結構:
AVEncVideoMaxKeyframeDistance | AVEncMPVDefaultBPictureCount | GOP 結構 |
---|---|---|
0 | 0 | IIII... |
AVEncMPVGOPSize - 1 | 0 | IPPP... |
AVEncMPVGOPSize - 1 | 1 | IBPBP... |
AVEncMPVGOPSize - 1 | 2 | IBBPBBP... |
預設 GOP 結構為 IBBPBBP...具有 15 個畫面格的 GOP 大小。
如果應用程式透過 AVEncCommonFormatConstraint 屬性) 將目標格式限制為 DVD (,並將 AVEncInputVideoSystem 屬性設定為 NTSC 或 PAL,編碼器支援下列 GOP 大小:
視訊系統 | 有效的 GOP 大小 | 預設 GOP 大小 |
---|---|---|
Ntsc | 1-18 | 18 個 (36 個欄位) |
PAL | 1-15 | 15 (30 個欄位) |
Codec 屬性變更清單
設定一個編解碼器屬性的值可以變更另一個屬性的有效範圍。 (例如,限制目標格式會限制平均位元速率。) 每當應用程式設定屬性時,編碼器會檢查任何其他屬性現在是否落在其有效範圍之外。 如果是,編碼器會將該屬性重設為其新的預設值。 若要在發生此情況時收到通知,請執行下列動作:
- 使用值呼叫ICodecAPI::RegisterForEvent CODECAPI_CHANGELISTS。
- 使用 IMediaEventEx 介面來監視篩選圖形中的事件。
- 如果屬性的範圍或預設值變更,編碼器會傳送具有已變更屬性清單 的EC_CODECAPI_EVENT 事件。
IEncoderAPI 支援
為了回溯相容性,篩選準則透過 IEncoderAPI 介面支援下列屬性:
屬性 | 描述 |
---|---|
ENCAPIPARAM_BITRATE | 相當於 AVEncCommonMeanBitRate。 |
ENCAPIPARAM_PEAK_BITRATE | 相當於 AVEncCommonMaxBitRate。 |
ENCAPIPARAM_BITRATE_MODE | 相當於 AVEncCommonRateControlMode。 |
設定 ENCAPIPARAM_BITRATE_MODE 屬性時,這些值會對應如下:
ENCAPIPARAM_BITRATE_MODE | AVEncCommonRateControlMode |
---|---|
ConstantBitRate | eAVEncCommonRateControlMode_CBR |
VariableBitRateAverage | 請參閱附註。 |
VariableBitRatePeak | eAVEncCommonRateControlMode_PeakConstrainedVBR |
注意
目前,MPEG-2 視訊編碼器不支援 VariableBitRateAverage 編碼模式。 如果您設定此值,編碼器會預設為 CBR 編碼 (eAVEncCommonRateControlMode_CBR) 。
取得 ENCAPIPARAM_BITRATE_MODE 屬性時,這些值會對應如下:
AVEncCommonRateControlMode | ENCAPIPARAM_BITRATE_MODE |
---|---|
eAVEncCommonRateControlMode_CBR | ConstantBitRate |
eAVEncCommonRateControlMode_Quality | VariableBitRatePeak |
eAVEncCommonRateControlMode_PeakConstrainedVBR | VariableBitRatePeak |
限制
編碼器目前不支援下列任何功能:
- 產生封包化基礎資料流程 (PES) 封包。
- 畫面播放速率轉換。 輸入資料流程必須有適用于 MPEG-2 位資料流程的畫面播放速率。
- MPEG-2 (frame_rate_extension_n的畫面播放速率延伸模組, frame_rate_extension_d) 。
- 進入/結束緩衝區 (VBV) 剪輯的位置。
- 將第 21 行資料插入 (隱藏式輔助字幕資訊,) 到影片基礎串流中。
- 在 MPEG-2 的 GOP 標頭中設定 25 位 time_code 欄位。
- 無聲篩選。
- 數位版權管理 (DRM) 。
編碼器引進至少一個 GOP 的編碼延遲。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows Vista Home Premium、Windows Vista Ultimate、Windows 7 Home Premium、Windows 7 Professional、Windows 7 Enterprise、Windows 7 Ultimate [僅限傳統型應用程式] |
最低支援的伺服器 |
都不支援 |
標頭 |
|
另請參閱