DVApp 範例

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

Description

數位視訊 (DV) 擷取應用程式。

此範例示範如何建置各種類型的篩選圖表,以控制 DV 攝影機。 它也會示範如何使用 DV 攝影機執行擷取、預覽、傳輸和裝置控制。

使用方式

DVApp 應用程式支援下列模式:

  • 預覽:將 DV 從攝影機轉譯為視訊視窗。
  • DV 到 type-1 檔案:將 DV 資料從攝影機擷取到 type-1 DV 檔案。
  • Type-1 檔案至 DV:將資料從 type-1 DV 檔案傳輸到攝影機。
  • DV 到 type-2 檔案:將 DV 資料從攝影機擷取到 type-2 DV 檔案。
  • Type-2 檔案至 DV:將資料從 type-2 DV 檔案傳輸到攝影機。

擷取和傳輸模式也會執行預覽。 這些模式也有 [無預覽 ] 選項,這會停用預覽。 在沒有預覽的情況下擷取會更有效率,並可減少已卸載畫面格的數目。

應用程式會以預覽模式啟動。 若要選取另一個模式,請從 [圖形模式 ] 功能表選擇模式。 針對每個模式,DVApp 會建置支援該模式功能的篩選圖形。 若要將圖形儲存為 GraphEdit (.grf) 檔案,請從 [檔案] 功能表中選取 [將圖形儲存至檔案]。 在 GraphEdit 中開啟檔案之前,請先結束 DVApp。

若要擷取至檔案:

  1. 從 [ 檔案] 功能表中,選擇 [ 設定輸出檔案 ],然後輸入檔案名。
  2. [圖形模式 ] 功能表中,選取 [DV 至檔案 ] 模式, (輸入 1 或類型 2,使用或不使用預覽) 。
  3. 按一下 [記錄]。
  4. 如果相機處於 VTR 模式,請按一下 [ 播放]。
  5. 若要停止擷取,請按一下 [ 停止]。

若要從檔案傳輸至攝影機:

  1. 從 [ 檔案] 功能表中,按一下 [設定輸入檔 ],然後選取 DV 檔案。 檔案必須符合選取的模式, (類型 1 或類型 2) 。
  2. [圖形模式 ] 功能表中,選取 [ 檔案到 DV ] 模式, (輸入 1 或類型 2,以及沒有預覽) 。
  3. 按一下 [播放]
  4. 若要將資料記錄到磁帶,請按一下 [記錄]。
  5. 若要停止傳輸,請按一下 [停止]。

如果相機處於 VTR 模式,使用者可以透過應用程式的 VCR 樣式按鈕來控制傳輸機制。 若要搜尋磁帶,請輸入目標 timecode,然後按一下 [搜尋] 按鈕。

若要限制應用程式擷取的資料量,請從 [檔案] 功能表選擇 [擷取大小]。

若要檢查 NTSC 或 PAL) (磁帶格式,請從 [選項] 功能表選擇 [檢查磁帶]。

若要變更預覽視窗的大小,請從 [選項] 功能表選擇 [變更解碼大小]。

程式設計注意事項

此應用程式的主要目的是示範如何建置各種 DV 擷取和傳輸圖表。

裝置抵達和移除

應用程式會使用兩種不同的技術來處理裝置抵達和移除。 針對裝置抵達,應用程式的訊息迴圈會回應WM_DEVICECHANGE訊息。 針對裝置移除,應用程式會回應篩選圖形管理員中的 EC_DEVICE_LOST 事件。 任一種方法都適用,雖然EC_DEVICE_LOST事件取決於篩選圖形中的裝置是否存在。

應用程式一次只會處理一個裝置。 如果移除目前的裝置,應用程式會在系統上尋找另一個 DV 裝置。

在某些 DV 攝影機上,使用者在相機模式與 VTR 模式之間切換時,必須關閉裝置,這會觸發裝置遺失的訊息。 應用程式會啟用或停用適當的功能表命令來回應。 不過,如果使用者在模式之間快速切換,攝影機可能不會產生裝置遺失的訊息。 您可以從 [選項] 功能表選擇 [重新整理模式] 來強制更新功能表。 有些 DV 攝影機可以在不關閉的情況下切換模式,但只有在切換至 VTR 模式時才會傳送裝置遺失的訊息。

裝置控制

[ 播放 ] 和 [ 錄製] 按鈕的功能取決於目前的模式:

  • 預覽:篩選圖表會自動執行。 [ 播放] 按鈕會啟動傳輸。
  • 擷取至檔案:[ 錄製] 按鈕會執行圖形,而 [ 播放] 按鈕會啟動傳輸。
  • 傳輸至裝置:[ 播放] 按鈕會執行圖形,而 [ 錄製] 按鈕會啟動傳輸。

範例應用程式不會執行畫面精確擷取。 在各種時間點,應用程式會呼叫 Sleep 函式,以等候裝置回應。 較新的 DV 攝影機會在裝置的狀態變更時傳送通知。 較舊的裝置可能不支援通知;為了範例的目的,呼叫 Sleep 是更簡單的解決方案。

下載範例

若要下載 DirectShow SDK 範例,請安裝最新版的 Windows SDK

此範例會安裝在下列路徑下: [SDK Root]\Samples\Multimedia\DirectShow\Capture\DVApp。

控制 DV Camcorder

DirectShow 中的數位視訊

DirectShow 範例