2013-05-17 375 views
1

我有一個AJA Capture卡。隨卡安裝的驅動程序包含一些DirectShow過濾器。如果我彈出過濾器進入GraphEdit中我看到這一點:DirectShow Capture Source和FFMPEG

AJA Capture Filter in GraphEdit

,如果我跑ffmpeg的命令

ffmpeg -f dshow -list_options true -i video="AJA Capture Source" 

我看到

[dshow @ 0034eec0] DirectShow video device options 
[dshow @ 0034eec0] Pin "Video" 
[dshow @ 0034eec0] pixel_format=yuyv422 min s=720x486 fps=27.2604 max s=1024x 
486 fps=29.985 
... 
[dshow @ 0034eec0] Pin "Audio 1-2" 
[dshow @ 0034eec0] Pin "Line21" 
video=AJA Capture Source: Immediate exit requested 

所以我看到的視頻和音頻我需要的針腳。但是當我嘗試運行ffmpeg命令來捕獲這兩個命令時,我只能弄清楚如何執行視頻部分。如何連接到該音頻引腳?看起來,所有的例子和文檔都指向使用一個單獨的音頻設備,並沒有任何關於引腳。現在我跑出來的批處理文件中像這樣和我使用^打破行

ffmpeg.exe^
-y^
-rtbufsize 100M^
-f dshow^
-i video="AJA Capture Source"^
-t 00:00:10^
-aspect 16:9^
-c:v libx264^
"C:\VCS_AUD_SAMPLE.mp4" 

再次,上面的命令會幫我買一些漂亮的視頻,但我想不通的音頻部分。這甚至支持在ffmpeg中,或者我將不得不修改ffmpeg dshow代碼?

回答

2

所以通過FFmpeg的它的源代碼,跟蹤後被認爲無法連接到dshow源的多個引腳,所以我們不用修改FFmpeg源,而是通過AJA源代碼通過兩個虛擬捕獲源引腳來實現期望的結果。

+0

請分享你的命令。我希望連接到音頻引腳,我找不到示例 – Max

+0

我發佈它作爲問題在這裏http://stackoverflow.com/questions/19113197/ffmpeg-directshow-capture-2-pins – Max

+0

謝謝@rogerdpack,但該項目很久以前就已經完成了,我不再能夠訪問硬件或資源。 –

1

http://ffmpeg.org/trac/ffmpeg/wiki/DirectShow

而且這種注意,「輸入字符串格式爲video=<video device name>:audio=<audio device name>

所以儘量

ffmpeg.exe -f dshow -i "video=AJA Capture Source:audio=audio source name" 
+0

試過了。問題是「AJA Capture Source」過濾器對硬件具有獨佔訪問權限,因此只能有一個實例。因此,如果我嘗試類似視頻=「AJA Capture Source」:audio =「AJA Capture Source」,它會將視頻和炸彈掛在音頻上。如果AJA有一個過濾器專用於音頻,一個過濾器專用於視頻,那就太好了,但實際上,似乎沒有辦法告訴ffmpeg連接到引腳,而不是過濾器。 –

+0

所以你可以做一個或另一個,但不能同時? – rogerdpack

+0

是的,一個或另一個。我甚至可以使用屬於網絡攝像頭話筒的濾波器。在這種情況下,AJA過濾器既是DirectShow下的「視頻捕獲源」和「音頻捕獲源」,也只有一個實例可以訪問硬件。這通常不會成爲常規DirectShow設置中的問題,因爲單個實例具有所有相關的引腳,但ffmpeg似乎以不基於引腳但基於設備的方式進行設置。 –

4

我是這個過濾器的開發者。

實際上,音頻和視頻流都使用相同的設備。而且,兩個數據流的數據都是一個函數調用的結果。在其他卡片(例如 - DeckLink)中通過單獨的音頻和視頻濾波器劃分是人爲的(它們必須在內部連接)。劃分的可能原因 - 試圖簡化圖形。但是,這可能會導致其他問題(使用來自不同設備的流)。

爲什麼ffmpeg無法與同一濾鏡的引腳一起工作 - 對我而言不是很清楚。 ffmpeg開發者的這個問題。

僅關於一個實例訪問 - 使用的是舊版本的AJA Capture Source過濾器。過濾器的更新版本允許您同時創建多個實例(但只有一個實例可能處於「播放」狀態)。請檢查AJA網站以下載最新版本的過濾器。如果你想檢查AJA過濾器的最新測試版本,請寫信給我[email protected]

2

好的支持(希望)最近在FFmpeg dshow中添加了,你可以指定ffmpeg -f dshow -i video="AJA Capture Source":audio="AJA Capture Source"現在它工作。

甚至有新的參數用於選擇你想要使用哪個引腳,如果你需要的話。 https://www.ffmpeg.org/ffmpeg-devices.html#dshow

如果它不適用於某人/任何人,請讓我知道rogerdpack @ gmail。com或在這裏發表評論。