共用方式為


ISampleGrabber::SetMediaType 方法

[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

注意

[已被取代。 此 API 可能會從未來的 Windows 版本中移除。]

 

方法 SetMediaType 會指定範例擷取器輸入針腳上連接的媒體類型。

語法

HRESULT SetMediaType(
   const AM_MEDIA_TYPE *pType
);

參數

pType

AM_MEDIA_TYPE結構的指標會指定必要的媒體類型。 不需要設定所有結構成員;如需詳細資訊,請參閱。

傳回值

傳回S_OK。

備註

根據預設,範例抓取器沒有慣用的媒體類型。 若要確保範例擷取器連線到正確的篩選準則,請先呼叫此方法,再建置篩選圖形。

這個方法會限制篩選準則將接受的媒體類型範圍。 當篩選連線時,它會嘗試比對 pType中指定的媒體類型。 若要這樣做,它會依該順序比較主要類型、子類型和格式類型 GUID。 針對每個 GUID,如果 pType 有值GUID_Null,Sample Grabber 會接受媒體類型,而不需要進一步檢查。 如果 pType 有任何其他值,範例抓取器會將它與連線類型中的 GUID 進行比較。 除非兩個 GUID 完全相符,否則範例擷取器會拒絕連線。

針對視訊媒體類型,範例抓取器會忽略格式區塊。 因此,它會接受任何視訊大小和畫面播放速率。 當您呼叫 SetMediaType 時,請將格式區塊 (pbFormat) 設定為 Null ,並將 cbFormat 的大小 (cbFormat) 設定為零。 如果是音訊媒體類型,範例抓取器會檢查 「其」結構 ,而且需要其他篩選來與該格式連接,除非 pType 中的格式區塊是 Null,或者格式標記是WAVE_FORMAT_PCM,而其他結構成員則是零。

範例 1:

  • 主要類型:MEDIATYPE_Video
  • 子類型:GUID_Null
  • 格式類型:GUID_Null

範例擷取器會接受主要類型等於MEDIATYPE_Video的任何視訊類型。 它不會檢查子類型。

範例 2:

  • 主要類型:MEDIATYPE_Video
  • 子類型:MEDIASUBTYPE_RGB24
  • 格式類型:GUID_Null

現在範例擷取器會檢查子類型,並且只接受 RGB 24 影片。

限制: 不論您設定的類型為何,「範例抓取器篩選」都會拒絕任何具有由上而下方向 (負 biHeight) 的視訊類型,或格式類型為 FORMAT_VideoInfo2。 在此情況下,雖然 SetMediaType 方法成功,但篩選準則將不會連線。

注意

標頭檔 Qedit.h 與 7 版之後的 Direct3D 標頭不相容。

 

注意

若要取得 Qedit.h,請下載Windows Vista Microsoft Windows SDK Update 和 .NET Framework 3.0。 Qedit.h 不適用於 Windows 7 和 .NET Framework 3.5 Service Pack 1 的 Microsoft Windows SDK。

 

規格需求

需求
標頭
Qedit.h
程式庫
Strmiids.lib

另請參閱

使用範例擷取器

ISampleGrabber 介面