这是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命令会捕获两个Pins?
更新
我的设备名称为7160 HD Capture
ffmpeg -f dshow -i video =“7160 HD Capture”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
我看到音频Pin在不同的卡片上有不同的名称。可能是我应该明确地命名它。
更新2
我没有音频捕捉设备,但视频捕捉肯定有音频。
我能够在默认音频设备上播放该音频引脚
答案 0 :(得分: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或在这里发表评论。
答案 1 :(得分:1)
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
答案 2 :(得分:0)
没有命令可以映射来自同一个过滤器实例的两个引脚。例如,执行以下命令:
ffmpeg.exe -f dshow -i "video=<src_filter_name>:audio=<src_filter_name>"
从图形上讲,它将创建“src_filter_name”的两个实例(由于你没有在你的问题中提供它,所以我记下了我所编写的名称)。如果您的过滤器很好,并且可以播放多个自身实例,那么您就可以了。
在图表编辑中尝试自己。将源滤波器放入两次,然后从第一个渲染音频引脚,从第二个渲染视频引脚。如果有效,则上述ffmpeg命令应该有效。
<强>更新强>
由于“7160 HD Capture”未列在“音频捕获源”下,因此ffmpeg将无法看到它。 ffmpeg的写入方式只能从视频捕获源的第一个视频引脚读取视频,而从音频捕获源的第一个音频引脚读取音频。
所以你的选择是
不幸的是我没有共享的源代码,只是基本的想法。两种解决方案都是C ++。如果你知道并理解ffmpeg源代码,那么directshow方式可能更有用,ffmpeg方式可能更容易: - )
答案 3 :(得分:0)
使用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
在VLC中打开udp:// @ 1234。
音频通过HDMI使用hd72a为我工作,我在HTTP中流式传输没有问题。
答案 4 :(得分:0)
您可以在DirectShow中复用2个捕获引脚,并使用此sink filter将多路复用的流发送到ffmpeg.exe。