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で見つけることができる唯一のストリームはビデオストリームです。そのため、音を捉えることができません。
だから私は自分のオープニングで何か間違ったことをしているのか、それとも何かを逃しているのかを尋ねています。
追伸:表示されているコードが短いことは知っていますが、このステップで問題が発生します。
ありがとうございました
カート
- 編集 -
AVFormatContextをダンプすると、ビデオストリームのサイズが456x32になることにも気づきました。そして、ffplayで破損したスクリプトを起動しようとすると、これとまったく同じサイズのウィンドウが表示されます。
ffplayで正しいスクリプトを再生したときの元のビデオフォーマットは1920x1080です
私の問題は、オーディオストリームを取得できないという単純な事実よりも深いかもしれないと思います。
この456x32ウィンドウに表示されるエラーメッセージを知る方法を見つけようとしています
-編集2-
私はこの画像に何が書かれているのかを調べ、私の問題は解決されました。古いものが置かれていたavsスクリプトが正しく配置されていません。
私は恥ずかしい。