在 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 播放正确脚本时的原始视频格式是 1920x1080
我认为我的问题可能比无法获取音频流的简单事实更深。
我试图找出如何知道这个 456x32 窗口上显示的错误消息
-- 编辑2 --
我找出了这张图片上写的内容,我的问题就解决了,放置不好的 avs 脚本是旧的。
我很惭愧。