共用方式為


初始化新 ASF 檔案的 ContentInfo 物件

藉由呼叫 MFCreateASFContentInfo 函式建立空的 ContentInfo 物件之後,應用程式必須呼叫 IMFASFContentInfo::SetProfile 以提供編碼設定檔。 如需建立設定檔的相關資訊,請參閱 建立 ASF 設定檔

在可從設定檔讀取資訊之前, SetProfile 方法必須檢查資料流程識別碼或媒體類型來驗證指定的設定檔物件。 如果設定檔通過驗證,就會產生各種標頭物件,例如 File Properties 物件、資料流程位元速率屬性物件、Stream Properties 物件,以及相互排除物件。

SetProfile 會計算並設定特定屬性的建議值,例如預先註冊值。 如果尚未設定,建議的預先註冊值以毫秒為單位,取決於設定檔中資料流程所指定流失貯體的最大緩衝區視窗。 同樣地,也會設定最小和最大資料封包大小。 建議的值可能會透過屬性覆寫設定檔上設定的封包大小。

因為檔案正在建立中,所以檔案會分類為廣播類型,這由 [檔案屬性] 物件的 [旗標] 欄位所表示。 某些未知的值,例如資料封包數目、播放持續時間和傳送持續時間都設定為零。 這些值是以 MF_PD_ASF_xxx 屬性工作表示,而且必須在檔案建立完成後由應用程式更新。

指定的設定檔物件會取代與 ContentInfo 物件相關聯的任何現有設定檔、移除參考的標頭物件,以及重設全域檔案屬性,例如預先註冊和資料封包大小。

SetProfile方法也會建立代表 ASF Data Object 的資料物件。 如果您重複使用包含任何資料封包相關資訊的 ContentInfo 物件, SetProfile 會失敗並傳回MF_E_ALREADY_INITIALIZED錯誤,指出它已經與現有的 ASF 資料物件相關聯。 根據預設,針對新的 ContentInfo 物件,資料封包計數會設定為零,而資料物件大小會設定為 50 個位元組。 如果您使用多工器來產生資料封包,多工器會更新 ContentInfo 物件以反映新的值,例如資料封包計數。 如需資料封包產生的詳細資訊,請參閱 產生新的 ASF 資料封包

將所有標頭物件新增至最終 ASF 標頭物件之後,可以呼叫 IMFASFContentInfo::GetHeaderSize來擷取總標頭大小。 此大小包含初始資料物件大小。

在 ContentInfo 物件中設定屬性

撰寫新檔案的 ASF 標頭物件