我发现 FFplay 是一个非常简单且实用的程序,可以使用以下方式显示来自我的捕获设备(MS2109)的视频:
ffplay -f v4l2 -framerate 60 -video_size 1280x720 -input_format mjpeg -i /dev/video0
但这并没有给我音频。在另一个上下文中,我使用 FFmpeg 将视频和音频捕获到 mkv 文件中,音频输入指定为-f alsa hw:1
。将其添加到 ffplay 命令只会出现错误
参数
hw:1
作为输入文件名提供,但/dev/video0
已指定。
如何使用 FFplay 从捕获设备获取音频输入?
答案1
正如 Gyan 所评论的,我们可以从 FFmpeg 传输到 FFplay:
ffmpeg -i -f v4l2 -framerate 60 -video_size 1280x720 -input_format mjpeg -i /dev/video0 -f alsa -i hw:1 -c copy -f nut pipe: | ffplay -f nut -i pipe:
使用 FFplay 的两个输入源有一些技巧,但我认为没有同时使用视频源和音频源的选项。
捕获输入源并将其传输到 FFplay 可能会解决该问题。
ffmpeg -i -f v4l2 -framerate 60 -video_size 1280x720 -input_format mjpeg -i /dev/video0
- 捕获视频输入(源)。-f alsa -i hw:1
- 捕获音频输入(源)。-c copy
- 不要重新编码输入流(保留原始编解码器)。-f nut
- 将视频和音频“Mux”到坚果容器。建议使用 NUT 格式,因为它几乎可以接受任何编解码器(无需重新编码)。pipe:
- 选择 stdout 作为输出。| ffplay -f nut -i pipe:
- 将 FFmpeg 的标准输出传递给 FFplay 的标准输入。|
应用“管道”运算符。-f nut
让 FFplay 接受 NUT 格式,并且-i pipe
,让 FFplay 播放来自标准输入管道的输入。
注意:
我无法使用alsa
输入来测试我的答案。
如果不起作用,请尝试-c:v copy -c:a pcm_s16le
而不是-c copy
。