設定視訊串流
視訊串流在設定中比音訊串流更有彈性。 這是因為組成視訊的畫面屬性可能會從一個檔案到下一個檔案而有所不同。 當您擷取所使用編解碼器的編解碼器格式時,您必須為視訊串流組態物件設定下列值。
值 | 描述 |
---|---|
位元速率 | 呼叫 IWMStreamConfig::SetBitrate 以設定為所需的值。 影片編解碼器會嘗試壓縮媒體以符合您的規格。 如果您的值太低,產生的壓縮視訊將會非常降低。 |
緩衝區視窗 | 呼叫 IWMStreamConfig::SetBufferWindow 以設定為所需的值。 影片編解碼器會嘗試壓縮媒體以符合您的規格。 如果您的值太低,產生的壓縮視訊將會非常降低。 |
WMVIDEOINFOHEADER.rcSource | 左上角必須設定為 0,0。 右下角必須設定為框架尺寸。 例如,在 640x480 資料流程中,這些設定會是 0,0,640,480。 |
WMVIDEOINFOHEADER.rcTarget | 必須符合 rcSource。 |
WMVIDEOINFOHEADER.dwBitRate | 必須符合為數據流設定的位元速率。 |
WMVIDEOINFOHEADER。AvgTimePerFrame | 設定為每個畫面的大約時間。 |
BITMAPINFOHEADER.biWidth | 設定為所需框架大小的寬度,以圖元為單位。 |
BITMAPINFOHEADER.biHeight | 設定為所需框架大小的高度,以圖元為單位。 |
除非視訊內容編碼為寬度和高度的四倍數,否則影片內容無法正確播放。 例外狀況是 RGB 未壓縮的視訊,可以是任何大小。 如果您嘗試設定不是四個倍數的大小,寫入器會傳回下列其中一個錯誤:
- NS_E_INVALID_INPUT_FORMAT
- NS_E_INVALID_OUTPUT_FORMAT
- NS_E_INVALIDPROFILE
如果您使用變數位元速率編碼,您可能需要進行其他調整。 如需詳細資訊,請參閱 設定 VBR 資料流程。
某些 Windows 媒體視訊編解碼器支援多個複雜度層級。 複雜度層級會決定編解碼器在編碼視訊串流時將使用的演算法。 使用高複雜度層級需要更多處理能力來進行編碼和解碼。
支援複雜度設定的每個編解碼器都會公開下列您可以使用 IWMCodecInfo3::GetCodecProp 方法擷取的設定。
設定 | 描述 |
---|---|
g_wszComplexityMax | 編解碼器支援的最大品質等級。 |
g_wszComplexityOffline | 離線播放的建議品質等級。 |
g_wszComplexityLive | 串流播放的建議品質等級。 |
若要在設定檔中設定視訊資料流程的複雜度,請使用屬性g_wszComplexity的 IWMPropertyVault::SetProperty 方法。 您設定的值必須小於或等於編解碼器支援的最大複雜度。
相關主題