无法找到音频流

时间:2011-11-16 18:05:03

标签: c++ c ffmpeg directshow avisynth

我正在尝试调整代码,以便在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->流中找到的唯一流是视频流。这就是为什么我无法捕获声音。

所以我问我的开场是否有问题,或者我是否错过了什么。

Ps:我知道显示的代码很短但问题出现在这一步!

谢谢

库尔特

- 编辑 -

我还注意到,当我转储AVFormatContext时,视频流的大小为456x32。 当我尝试使用ffplay启动损坏的脚本时,我可以找到显示的窗口大小。

使用ffplay播放正确脚本时的原始视频格式为1920x1080

我认为我的问题可能比无法获得音频流的简单事实更深刻。

我正在尝试了解如何知道此456x32窗口上显示的错误消息

- EDIT2 -

我知道这张图片上写的内容是什么,我的问题已经解决了,这个版本很糟糕的是一个旧的脚本。

我很惭愧。

1 个答案:

答案 0 :(得分:1)

我的不好,

错误放置的avs文件是我的问题。

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