1

这是 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 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

图表编辑

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

我可以在默认音频设备上播放该音频引脚

4

5 回答 5

2

最近在 FFmpeg dshow 中(希望)添加了对此的 OK 支持,您ffmpeg -f dshow -i video="AJA Capture Source":audio="AJA Capture Source"现在可以指定它并且它可以工作。

如果需要,甚至还有用于选择要使用的引脚的新参数。 https://www.ffmpeg.org/ffmpeg-devices.html#dshow

如果它对某人/任何人不起作用,请让我知道 rogerdpack@gmail.com 或在此处发表评论。

于 2015-01-27T20:45:56.607 回答
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
于 2015-03-01T18:23:08.343 回答
0

没有命令可以映射来自同一过滤器实例的两个引脚。例如,使用以下命令:

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

从图形上讲,它将创建“src_filter_name”的两个实例(因为您没有在您的问题中提供它,所以它是我编造的名称)。如果您的过滤器很好,并且可以使用多个自身实例,那么您就可以了。

在图形编辑中自己尝试。放入源过滤器两次,从第一个渲染音频引脚,从第二个渲染视频引脚。如果可行,那么上面的 ffmpeg 命令应该可以工作。

更新

由于您的“7160 HD Capture”未列在“Audio Capture Sources”下,ffmpeg 将看不到它。ffmpeg 的编写方式是它只会从视频捕获源的第一个视频引脚读取视频,并从音频捕获源的第一个音频引脚读取音频。

所以你的选择是

  1. 通过修改其源代码来改变 ffmpeg 连接 dshow 设备的方式
  2. 创建一个 dshow sink 过滤器,您可以将来自 7160 HD Capture 设备的音频和视频发送到该过滤器中,然后创建一个可以作为 ffmpeg 的音频和视频源的源过滤器。这将需要一个进程或线程将数据推送到接收器,以及如何使其对源可用。

不幸的是我没有源代码可以分享,只是基本的想法。两种解决方案都使用 C++。如果您了解并理解 ffmpeg 源代码,directshow 方式可能更有效,ffmpeg 方式可能更容易:-)

于 2013-10-01T20:23:07.813 回答
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 中流式传输没有问题。

于 2015-02-28T09:07:53.423 回答
0

您可以在 DirectShow 中多路复用 2 个捕获引脚,并使用此接收器过滤器将多路复用流发送到 ffmpeg.exe 。

于 2015-03-05T10:54:44.430 回答