4

我有一张 AJA Capture 卡。随卡安装的驱动程序包括一些 DirectShow 过滤器。如果我将过滤器弹出到 GraphEdit 中,我会看到:

GraphEdit 中的 AJA 捕获过滤器

如果我运行 ffmpeg 命令

ffmpeg -f dshow -list_options true -i video="AJA Capture Source"

我懂了

[dshow @ 0034eec0] DirectShow video device options
[dshow @ 0034eec0]  Pin "Video"
[dshow @ 0034eec0]   pixel_format=yuyv422  min s=720x486 fps=27.2604 max s=1024x
486 fps=29.985
...
[dshow @ 0034eec0]  Pin "Audio 1-2"
[dshow @ 0034eec0]  Pin "Line21"
video=AJA Capture Source: Immediate exit requested

所以我看到了我需要的视频和音频引脚。但是当我尝试运行 ffmpeg 命令来捕获两者时,我只能弄清楚如何做视频部分。我如何连接到那个音频引脚?似乎所有示例和文档都指向使用单独的音频设备,而没有任何关于连接到引脚的内容。我现在像这样从批处理文件中运行它,我使用 ^ 来换行

ffmpeg.exe ^
-y ^
-rtbufsize 100M ^
-f dshow ^
-i video="AJA Capture Source" ^
-t 00:00:10 ^
-aspect 16:9 ^
-c:v libx264 ^
"C:\VCS_AUD_SAMPLE.mp4"

同样,上面的命令会给我一些漂亮的视频,但我不知道音频部分。ffmpeg 是否支持这一点,还是我必须修改 ffmpeg dshow 代码?

4

4 回答 4

6

我是这个过滤器的开发者。

实际上,相同的设备用于音频和视频流。此外,两个流的数据都是一个函数调用的结果。在其他卡(例如 - DeckLink)中通过单独的音频和视频过滤器进行划分是人为的(它们必须在内部连接)。划分的可能原因 - 试图简化图表。但是,这可能会导致其他问题(使用来自不同设备的流)。

为什么 ffmpeg 不能使用相同过滤器的引脚 - 我不清楚。ffmpeg 开发者的这个问题。

大约只有一个实例访问 - 使用了非常旧版本的 AJA Capture Source 过滤器。过滤器的更新版本允许您同时创建多个实例(但只有一个实例可能处于“播放”状态)。请查看 AJA 网站以下载最新版本的过滤器。如果您想查看 AJA 过滤器的最新测试版,请通过 support@avobjects.com 给我写信

于 2014-01-05T05:25:05.513 回答
4

因此,在跟踪 FFmpeg 的源代码后,认为它无法连接到 dshow 源上的多个引脚,因此我们没有修改 FFmpeg 源,而是通过两个虚拟捕获源对 AJA 源引脚进行管道传输以达到预期的结果。

于 2013-07-30T13:45:40.480 回答
3

最近在 FFmpeg dshow 中(希望)添加了对此的 OK 支持,您ffmpeg -f dshow -i video="AJA Capture Source":audio="AJA Capture Source"现在可以指定它并且它可以工作。

如果需要,甚至还有用于选择要使用的引脚的新参数。 https://www.ffmpeg.org/ffmpeg-devices.html#dshow

如果它对某人/任何人不起作用,请让我知道 rogerdpack@gmail.com 或在此处发表评论。

于 2015-01-27T20:44:32.677 回答
1

来自http://ffmpeg.org/trac/ffmpeg/wiki/DirectShow

另请注意,“输入字符串的格式为video=<video device name>:audio=<audio device name>.

所以试试

ffmpeg.exe -f dshow -i "video=AJA Capture Source:audio=audio source name"
于 2013-06-24T13:46:57.367 回答