Windows 媒體音訊和 Windows 媒體視訊編碼器支援各種不同的編碼模式。 這些模式通常是藉由在編碼器 媒體基礎轉換 (MFT) 上設定屬性來設定。 若要執行檔案編碼,無論是使用WMContainer 層級元件還是建置部分拓撲,您必須根據編碼模式和數據流的媒體類型來適當地設定編碼器。 您在編碼器和您用來寫入 ASF 檔案的物件(如 ASF 檔案接收器或 ASF 多工器)上必須設定相同的屬性集。
編碼器屬性定義於 wmcodecdsp.h 中。 用來設定編碼器的特定屬性是使用 IPropertyStore 介面的 方法來設定。
音訊串流屬性
下表顯示音訊數據流的編碼器設定。
| 編碼類型 | 屬性名稱 - 值 |
|---|---|
| 常數比特率編碼 | MFPKEY_VBRENABLED - FALSE (選擇性)根據預設,MFPKEY_VBRENABLED會設定為 FALSE。 |
| Quality-Based 變數比特率編碼 | MFPKEY_VBRENABLED - TRUE MFPKEY_PASSESUSED - 1 (選擇性) 根據預設,MFPKEY_PASSESUSED設為1。 MFPKEY_DESIRED_VBRQUALITY - 從 0 到 100 |
| 不受限制的變數比特率編碼 | MFPKEY_VBRENABLED - TRUE MFPKEY_PASSESUSED - 2 |
| Peak-Constrained 變數比特率編碼 | MFPKEY_VBRENABLED - TRUE MFPKEY_PASSESUSED - 2 MFPKEY_RMAX - 最大比特率 MFPKEY_BMAX - 緩衝區視窗上限 |
影片串流屬性
下表顯示視訊數據流的編碼器設定。
| 編碼類型 | 屬性名稱 |
|---|---|
| 常數比特率編碼 | MFPKEY_VBRENABLED - FALSE (選擇性) 根據預設,MFPKEY_VBRENABLED會設定為 FALSE。 MFPKEY_VIDEOWINDOW - 緩衝區視窗 |
| Quality-Based 變數比特率編碼 | MFPKEY_VBRENABLED - TRUE MFPKEY_PASSESUSED - 1 (選擇性) 根據預設,MFPKEY_PASSESUSED設為1。 MFPKEY_DESIRED_VBRQUALITY - 從 0 到 100 |
| 不受限制的變數比特率編碼 | MFPKEY_VBRENABLED - TRUE MFPKEY_PASSESUSED - 2 |
| Peak-Constrained 變數比特率編碼 | MFPKEY_VBRENABLED - TRUE MFPKEY_PASSESUSED - 2 MFPKEY_RMAX - 最大比特率 MFPKEY_BMAX - 緩衝區視窗上限 |
設定編碼器的屬性存放區
您必須在編碼會話之前指定編碼類型和各種數據流特定設定,以設定編碼器。 您也必須在 ASF ContentInfo 物件的屬性存放區中設定編碼器屬性, 代表輸出檔案的 ASF 標頭物件。
如果您使用編碼器 MFT:
- 取得編碼器 MFT 的 IMFTransform 介面的參考資料,詳情如 所述的使用編碼器的 IMFTransform 介面。
- 查詢 IPropertyStore 介面的編碼器 MFT。
- 呼叫 IPropertyStore::SetValue來設定必要的屬性。
如果您使用內建編碼器啟用物件並已建立並設定 ASF 檔案接收,您可以將 ASF 媒體接收的屬性存放區傳遞至 MFCreateWMAEncoderActivate 或 MFCreateWMVEncoderActivate。 編碼器會根據應用程式指定的設定自動設定。 如需詳細資訊,請參閱 使用編碼器的啟用物件中所述的程式。
如需使用啟用物件建立 Media Foundation 物件的詳細資訊,請參閱 Activation Objects。
相關主題