在檔案接收中設定屬性

ASF 檔案接收是媒體基礎所提供的 IMFMediaSink 實作,應用程式可用來將 ASF 媒體資料封存到檔案。 如需 ASF 媒體接收的物件模型和一般用法的相關資訊,請參閱 ASF 媒體接收

建立 ASF 檔案接收之後,它必須設定輸出檔案中資料流程的相關資訊。 將 資料流程資訊新增至 ASF 檔案接收中會說明此程式。 您可以根據編碼類型,在檔案接收上設定其他屬性;流失值區;一般檔案屬性。 這些設定不會寫入最終 ASF 標頭物件中。 本主題描述在檔案接收的屬性存放區中新增這些屬性的程式。

ContentInfo 物件會維護檔案接收的全域檔案屬性和個別資料流程屬性。 如需取得檔案接收之 ASF ContentInfo 物件參考的資訊,請參閱 建立 ASF 檔案接收

若要取得檔案接收的屬性存放區參考 (IPropertyStore) ,請在檔案接收的 ContentInfo 物件參考上呼叫 IMFASFContentInfo::GetEncodingConfigurationPropertyStore

資料流程編碼屬性

若要正確編碼內容,檔案必須知道特定的編碼資訊,例如編碼類型和相關的編碼參數。 這些值會在檔案接收上設定為 ASF ContentInfo 物件所維護之屬性存放區中的屬性值。 如果您要在具現化相關編碼器之前設定檔案接收,您可以使用 ContentInfo 物件搭配所有填入的屬性來建立 Windows 媒體編碼器。 在此情況下,屬性會自動在具現化的編碼器上設定。 相反地,如果您要在接收之前建立編碼器,請確定您在編碼器上設定的屬性會複製到檔案接收的屬性存放區。

若要設定編碼屬性,您需要存取檔案接收的資料流程層級屬性存放區。 在IMFASFContentInfo::GetEncodingConfigurationPropertyStore方法的wStreamNumber參數中傳遞資料流程編號。 資料流程編號必須符合設定檔中設定每個資料流程時所設定的值。 屬性值是藉由呼叫 IPropertyStore::SetValue 來設定。 下表描述支援的屬性。

屬性取決於編碼的類型。 如需屬性和您必須設定之個別值的相關資訊,請參閱 編碼屬性

Leaky Bucket 屬性

流失值區參數會決定編碼器用於資料流程的實際緩衝區視窗。 檔案接收的 MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET 屬性包含流失值區參數、位元速率、緩衝區視窗和初始緩衝區完整性。這個屬性是在檔案接收的資料流程層級屬性存放區中設定,而且必須在編碼器建立和設定之後設定。 這個值是在 中設定。 在媒體類型交涉期間,編碼器會決定要使用的緩衝區視窗和位元速率。 您可以使用定義于 wmcodecifaces.h 中的 IWMCodecLeakyBucket 介面來取得這些值,而且您必須連結到 wmcodecdspuuid.lib 以呼叫其方法。

針對 ASF 檔案接收中的每個資料流程,可以設定所擷取的值。

全域檔案接收屬性

若要取得檔案接收的全域屬性存放區,請在IMFASFContentInfo::GetEncodingConfigurationPropertyStore方法的wStreamNumber參數中傳遞 0。 屬性值是藉由呼叫 IPropertyStore::SetValue 來設定。 下表描述支援的屬性。

檔案層級屬性 描述
MFPKEY_ASFMEDIASINK_BASE_SENDTIME 傳送時程表示何時釋放流失貯體內的承載。 這個屬性值表示第一次傳送時間。 多工器會使用此值來計算所產生封包的後續傳送時間,並確保資料流程會穩定流經流失貯體。
MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE 這個 BOOL 值指出多工器是否需要自動調整位元速率,以確保資料不會溢位流失貯體。
MFPKEY_ASFMEDIASINK_DRMACTION 這表示用於產生檔案的 ASF 媒體接收 DRM 動作。 在此版本中,僅支援 DRM 轉碼。

 

ASF 媒體接收

管線層 ASF 元件

媒體基礎中的 ASF 支援