共用方式為


Microsoft MPEG-2 視訊編碼器

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 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_VideoMEDIASUBTYPE_I420
MEDIATYPE_VideoMEDIASUBTYPE_IYUV
MEDIATYPE_VideoMEDIASUBTYPE_RGB24
MEDIATYPE_VideoMEDIASUBTYPE_UYVY
MEDIATYPE_VideoMEDIASUBTYPE_YUY2
MEDIATYPE_VideoMEDIASUBTYPE_YV12

輸入針腳介面

IMemInputPin
IPin
IQualityControl

輸出釘選媒體類型

MEDIATYPE_StreamMEDIASUBTYPE_MPEG2_VIDEO
MEDIATYPE_StreamMEDIASUBTYPE_MPEG2_PROGRAM
MEDIATYPE_StreamMEDIASUBTYPE_MPEG2_TRANSPORT
MEDIATYPE_VideoMEDIASUBTYPE_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

 

建議依照下列順序設定屬性:

  1. AVEncCommonFormatConstraint
  2. AVEncCodecType
  3. AVEncMPVProfile
  4. AVEncMPVLevel
  5. AVEncInputVideoSystem

依任何順序設定其餘屬性。 不過, (請參閱 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
注意: 在此模式中,不會使用 AVEncCommonMeanBitRateAVEncCommonMinBitRate 屬性。 最小位元速率假設為零。
尖峰限制 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。)

編碼器會依序嘗試下列設定:

  1. 如果應用程式在篩選圖形執行之前,隨時設定 AVEncVideoPixelAspectRatio 屬性,則會將此屬性用於 PAR。
  2. 否則,如果VIDEOINFOHEADER2結構的dwPictAspectRatioXdwPictAspectRatioY成員為非零,這些成員會用於顯示外觀比例,而且會從顯示外觀比例計算 PAR。
  3. 如果沒有這些值,則會假設 PAR 為 1.0,並據以計算顯示外觀比例。

在即時編碼模式 (AVEncCommonQualityVsSpeed 等於零) ,顯示外觀比例必須是 4:3 或 16:9,預設值為 4:3。 如果計算的顯示外觀比例不是 4:3 或 16:9,編碼器會使用值 4:3。

GOP 結構

若要指定圖片群組 (GOP) 結構,請依序設定下列屬性:

  1. AVEncMPVGOPSize
  2. AVEncVideoMaxKeyframeDistance
  3. AVEncMPVDefaultBPictureCount

根據這些設定,編碼器會產生下列其中一個 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 屬性變更清單

設定一個編解碼器屬性的值可以變更另一個屬性的有效範圍。 (例如,限制目標格式會限制平均位元速率。) 每當應用程式設定屬性時,編碼器會檢查任何其他屬性現在是否落在其有效範圍之外。 如果是,編碼器會將該屬性重設為其新的預設值。 若要在發生此情況時收到通知,請執行下列動作:

  1. 使用值呼叫ICodecAPI::RegisterForEvent CODECAPI_CHANGELISTS。
  2. 使用 IMediaEventEx 介面來監視篩選圖形中的事件。
  3. 如果屬性的範圍或預設值變更,編碼器會傳送具有已變更屬性清單 的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 [僅限傳統型應用程式]
最低支援的伺服器
都不支援
標頭
Wmcodecdsp.h

另請參閱

DirectShow 篩選

MPEG-2 Demultiplexer 媒體類型