FFMPEG DirectShow的捕获2个销(ffmpeg DirectShow capture

2019-10-18 17:03发布

这里是ffmpeg的DirectShow的选项

 DirectShow video device options
  Pin "Capture"
   pixel_format=yuyv422  min s=720x480 fps=59.9402 max s=720x480 fps=59.9402
   pixel_format=yuyv422  min s=720x480 fps=29.97 max s=720x480 fps=29.97
   pixel_format=yuyv422  min s=720x576 fps=50 max s=720x576 fps=50
   pixel_format=yuyv422  min s=720x576 fps=25 max s=720x576 fps=25
   pixel_format=yuyv422  min s=640x480 fps=59.9402 max s=640x480 fps=59.9402
   pixel_format=yuyv422  min s=1920x1080 fps=29.97 max s=1920x1080 fps=29.97
   pixel_format=yuyv422  min s=1920x1080 fps=25 max s=1920x1080 fps=25
   pixel_format=yuyv422  min s=1920x1080 fps=24 max s=1920x1080 fps=24
   pixel_format=yuyv422  min s=1280x720 fps=59.9402 max s=1280x720 fps=59.9402
   pixel_format=yuyv422  min s=1280x720 fps=50 max s=1280x720 fps=50
  Pin "Audio"

什么ffmpeg的命令将捕获两个引脚?

更新

我的设备名称是7160 HD Capture的ffmpeg -f用于dshow -i视频=“7160高清采集” out.mp4

下面的命令正常工作: -

ffmpeg -f dshow -s 1280x720 -i video="7160 HD Capture" -rtbufsize 2000M out19.mp4

我试过了

ffmpeg -f dshow -s 1280x720 -i "video=7160 HD Capture:audio=7160 HD Capture" -rtbufsize 2000M out20.mp4

它不工作,并返回错误: -

[dshow @ 000000000250b540] Could not enumerate audio devices. video=7160 HD Capture:audio=7160 HD Capture: Input/output error

我看到,音频引脚对不同的卡不同的名称。 可能是我应该明确地命名。

更新2

我没有音频捕获设备,但视频采集肯定有音频。

我能够播放音频引脚默认音频设备上

Answer 1:

此行的支持是(希望)日前在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或在这里发表评论。



Answer 2:

ffmpeg.exe -f dshow -s 1920x1080 -i "video=Timeleak HD Capture (YPbPr):audio=Timeleak HD Capture (YPbPr)" -c:v libx264 -preset ultrafast -c:a ac3 -f mpegts udp://127.0.0.1:1234


Answer 3:

没有命令,将两个销从所述过滤器的同一实例映射。 例如,利用这个命令:

ffmpeg.exe -f dshow -i "video=<src_filter_name>:audio=<src_filter_name>"

图形来讲,它会创建“src_filter_name”的两个实例(即beign我,因为你做了的名字在你的问题没有提供它)。 如果你的过滤器是好的,并与自身的多个实例播放,那么你会没事的。

在图形编辑试试你的自我。 在源滤波器下降两次,和呈现从第一音频销,和从所述第二视频销。 如果工作那么上面的ffmpeg的命令应该工作。

更新

由于您的“7160高清采集”是不是在“音频捕获来源”列出的ffmpeg不会看到它。 ffmpeg的是用这样一种方式,它只会从音频捕获源的第一音频引脚读取从视频采集源的第一视频端子视频和音频。

所以,你的选择是在这里

  1. 通过修改其源代码改变方式FFMPEG导线了DSHOW设备
  2. 创建为您发送从7160高清采集设备的音频和视频,然后创建一个源过滤器,可以为双方的ffmpeg的音频和视频源扮演一个DSHOW水槽的过滤器。 这将需要一个进程或线程将数据推到水槽和一些如何使其可用于来源。

不幸的是我没有源代码共享,只是基本的想法。 这两种解决方案将是C ++。 在DirectShow的方式可能是更多的工作,ffmpeg的方式可能是比较容易,如果你知道和了解FFmpeg的源代码:-)



Answer 4:

从timeleak使用最后一个驱动程序。

ffmpeg.exe -f dshow -s 1920x1080 -i "video=Timeleak HD Capture (YPbPr):audio=Timeleak HD Capture (YPbPr)" -f mpegts udp://127.0.0.1:1234

打开UDP:在VLC // @ 1234。

音频作品对我来说,通过HDMI hd72a和我在HTTP流没有问题。



Answer 5:

您可以复用DirectShow中的2个捕获管脚和发送多路复用流与此有关ffmpeg.exe 水槽过滤器 。



文章来源: ffmpeg DirectShow capture 2 pins