我正在嘗試修改代碼以便在ffmpeg和directshow的幫助下添加聲音捕獲功能(在實時流上)。無法找到音頻流
當我試着玩ffplay AVIsynth文件,一切工作完美我有音頻和視頻。但是當我通過代碼打開這個輸入文件時,我只能找到視頻流。
的AVS文件:
V = DirectShowSource("Decklink_HDMI.grf", fps=10, framecount=1000000000, seek=false, audio=false)
A = DirectShowSource("Decklink_Audio.grf", fps=1, framecount=1000000000, video=false)
AudioDub(V, A)
開幕代碼:
ffmpeg::AVInputFormat * ifmt;
ifmt = ffmpeg::av_find_input_format("avs");
// Open input file
if(ffmpeg::avformat_open_input(&pFormatCtx, filename.toStdString().c_str(), ifmt, NULL) != 0)
當我剛剛開幕後作出的gdb變量望風。
我正在查看pFormatCtx-> nb_streams中的nb_streams,它位於1 我唯一可以在pFormatCtx-> stream中找到的流是一個視頻。這就是爲什麼我無法捕捉聲音。
所以我問我是否做錯了我的開幕或如果我錯過了什麼。
Ps:我知道顯示的代碼很短,但問題出現在這一步!
謝謝
庫爾特
- 編輯 -
我也注意到,當我轉儲AVFormatContext視頻流得到了一個456x32大小。 當我嘗試使用ffplay啓動損壞的腳本時,我可以找到顯示的窗口大小相同。
當我玩了正確的腳本ffplay原始視頻格式爲1920×1080
我想我的問題是,也許不是不能夠獲得音頻流的簡單事實更深。
我試圖找出如何知道會被顯示在456x32窗口
錯誤消息 - EDIT2 -
我瞭解這是什麼形象上寫,我的問題是,解決了,嚴重的AVS腳本是一個老的地方。
我很慚愧。
如果pFormatCtx-> nb_streams == 1,那麼在該文件中只有一個流。 – 2011-11-16 18:19:57
這是正確的,但當我在ffplay上播放此文件或與虛擬配音我可以檢查他們顯然是2流,我可以聽到聲音,所以avs文件包含毫無疑問2流 – Kurt
你能上傳該文件的一個簡短的例子?我的意思是,您還可以構建ffplay並逐步瀏覽代碼,以瞭解ffplay如何實現它... – 2011-11-16 18:29:30