我有一张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代码?
答案 0 :(得分:4)
我是此过滤器的开发者。
实际上,同一设备用于音频和视频流。而且,两个流的数据都是一个函数调用的结果。在其他卡(例如DeckLink)中使用单独的音频和视频滤波器进行划分是人为的(它们必须在内部连接)。划分的可能原因 - 尝试简化图表。但是,这可能会导致其他问题(使用来自不同设备的流)。
为什么ffmpeg无法使用相同滤镜的引脚 - 我不清楚。 ffmpeg开发人员的这个问题。
仅关于一个实例访问 - 使用了非常旧版本的AJA Capture Source过滤器。更新版本的过滤器允许您同时创建多个实例(但只有一个实例可能处于“播放”状态)。请检查AJA网站以下载最新版本的过滤器。如果您想查看最新的AJA过滤器测试版,请发送电子邮件至support@avobjects.com
答案 1 :(得分:2)
因此,在跟踪FFmpeg的源代码之后,它被认为无法连接到dshow源上的多个引脚,因此我们不是修改FFmpeg源,而是通过两个虚拟捕获源管理AJA源引脚以实现期望的结果。
答案 2 :(得分:2)
好的支持这个(希望)最近在FFmpeg dshow中添加了,你现在可以指定ffmpeg -f dshow -i video="AJA Capture Source":audio="AJA Capture Source"
并且它可以工作。
如果需要,甚至还有新的参数可供您选择要使用的引脚。 https://www.ffmpeg.org/ffmpeg-devices.html#dshow
如果它对某人/任何人不起作用,请告诉我rogerdpack@gmail.com或在这里发表评论。
答案 3 :(得分: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"