我有一张 AJA Capture 卡。随卡安装的驱动程序包括一些 DirectShow 过滤器。如果我将过滤器弹出到 GraphEdit 中,我会看到:
如果我运行 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 代码?
最佳答案
我是这个过滤器的开发者。
实际上,相同的设备用于音频和视频流。此外,两个流的数据都是一个函数调用的结果。在其他卡(例如 - DeckLink)中通过单独的音频和视频过滤器进行划分是人为的(它们必须在内部连接)。划分的可能原因 - 试图简化图表。但是,这可能会导致其他问题(使用来自不同设备的流)。
为什么 ffmpeg 不能使用相同过滤器的引脚 - 我不清楚。 ffmpeg 开发者的这个问题。
大约只有一个实例访问 - 使用了非常旧版本的 AJA Capture Source 过滤器。过滤器的更新版本允许您同时创建多个实例(但只有一个实例可能处于“播放”状态)。请查看 AJA 网站以下载最新版本的过滤器。如果您想查看 AJA 过滤器的最新测试版,请通过 support@avobjects.com 给我写信
关于ffmpeg - DirectShow 捕获源和 FFMPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16618686/