2011-11-16 4 views
0

私はffmpegとdirectshowの助けを借りて(ライブストリーム上で)サウンドキャプチャ機能を追加するためにコードを適応しようとしています。オーディオストリームを見つけることができません

私は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-で見つけることができる唯一のストリームです。それで、私はその音を捉えることができません。

私は私のオープニングで何か間違っているのか、何かが欠けているのか聞いています。

Ps:表示されているコードが短いことは分かっていますが、問題はこの非常に重要なステップです。私も、私はAVFormatContextをダンプする際に、ビデオストリームは456x32のサイズを持っていることに気づいた

- EDIT -

はあなたに

クルト

ありがとうございます。 そして、私はffplayで破損したスクリプトを起動しようとすると、これと同じサイズのウィンドウが表示されることがあります。

私はffplayで正しいスクリプトを果たし、元のビデオフォーマットは、私は私の問題は、オーディオストリームを取得することができないの単純な事実よりも多分深いと思い1920x1080の

です。

私は

この456x32のウィンドウに表示されたエラーメッセージを知っている方法を見つけようとしている - EDIT2 - 私はこの画像に書かれているかを調べる

をし、私の問題があります解決した、ひどく置かれたavsスクリプトは、古いものがあった場所です。

私は恥ずかしいです。ひどくファイルAVS置か

+0

pFormatCtx-> nb_streams == 1の場合、そのファイルには1つのストリームしかありません。 –

+0

これは正しいコヨーテですが、私はffplayまたはバーチャルダブでこのファイルを再生すると、そのストリームが明確に2ストリームであることを確認できます。したがって、AVSファイルに疑問のない2ストリームが含まれています。 – Kurt

+0

そのファイルの短い例をアップロードできますか?つまり、ffplayを作成し、コードをステップ実行して、ffplayがどのように動作するかを見ることができます... –

答えて

1

私の悪い、

Aは私の問題でした。

とにかくffmpegは、エラーを表示する方法が少し苦しく、エラーメッセージや例外を発生させずにスナップショットを作成するように強制されています。