2013-05-17 173 views
1

我有一个AJA Capture卡。随卡安装的驱动程序包含一些DirectShow过滤器。如果我弹出过滤器进入GraphEdit中我看到这一点:DirectShow Capture Source和FFMPEG

AJA Capture Filter in 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代码?

回答

2

所以通过FFmpeg的它的源代码,跟踪后被认为无法连接到dshow源的多个引脚,所以我们不用修改FFmpeg源,而是通过AJA源代码通过两个虚拟捕获源引脚来实现期望的结果。

+0

请分享你的命令。我希望连接到音频引脚,我找不到示例 – Max

+0

我发布它作为问题在这里http://stackoverflow.com/questions/19113197/ffmpeg-directshow-capture-2-pins – Max

+0

谢谢@rogerdpack,但该项目很久以前就已经完成了,我不再能够访问硬件或资源。 –

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" 
+0

试过了。问题是“AJA Capture Source”过滤器对硬件具有独占访问权限,因此只能有一个实例。因此,如果我尝试类似视频=“AJA Capture Source”:audio =“AJA Capture Source”,它会将视频和炸弹挂在音频上。如果AJA有一个过滤器专用于音频,一个过滤器专用于视频,那就太好了,但实际上,似乎没有办法告诉ffmpeg连接到引脚,而不是过滤器。 –

+0

所以你可以做一个或另一个,但不能同时? – rogerdpack

+0

是的,一个或另一个。我甚至可以使用属于网络摄像头话筒的滤波器。在这种情况下,AJA过滤器既是DirectShow下的“视频捕获源”和“音频捕获源”,也只有一个实例可以访问硬件。这通常不会成为常规DirectShow设置中的问题,因为单个实例具有所有相关的引脚,但ffmpeg似乎以不基于引脚但基于设备的方式进行设置。 –

4

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

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

为什么ffmpeg无法与同一滤镜的引脚一起工作 - 对我而言不是很清楚。 ffmpeg开发者的这个问题。

仅关于一个实例访问 - 使用的是旧版本的AJA Capture Source过滤器。过滤器的更新版本允许您同时创建多个实例(但只有一个实例可能处于“播放”状态)。请检查AJA网站以下载最新版本的过滤器。如果你想检查AJA过滤器的最新测试版本,请写信给我[email protected]

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或在这里发表评论。