如何指定FFplay的音频输入?

如何指定FFplay的音频输入?

我发现 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

相关内容