0

在 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 脚本是旧的。

我很惭愧。

4

1 回答 1

1

我的错,

一个放置不当的avs文件是我的问题。

无论如何,ffmpeg 显示错误的方式有点痛苦,被迫制作快照而没有任何错误消息或异常引发(或者我可能失败了)。

于 2011-11-18T08:29:35.730 回答