如何播放带有来自单独文件的音频的视频?(播放期间多路复用)

如何播放带有来自单独文件的音频的视频?(播放期间多路复用)

我的笔记本电脑运行的是 Xubuntu 14.04 LTS。我正在为一部无声电影创作配乐,我想“米老鼠”(将音符与动作同步)。我可以稍微调整无声电影的剪辑,使事件与音乐节奏保持一致。制作电影的工具以每两分钟约 1 GB 的速度渲染无损中间文件(带有 Huffyuv 的 AVI),我可以将其编码为压缩格式(带有 VP8 的 WebM 或带有 AVC 的 MPEG-4)。

如果我已经对视频进行了编码,我通常会使用此命令行将压缩视频与乐谱结合起来,基于avconv 替换音频

avconv -y -i the_video.mp4 -i the_audio.wav -map 0:0 -map 1:0 -c:v copy -c:a libvo_aacenc -ac 1 -ab 48000 -t 120 result.mp4
avplay result.mp4

由于无损中间文件的大小为 GB,因此-c:v copy每次我想检查更改时,我都不想复制这些 GB。我也不想每次都进行编码,因为我的笔记本电脑的 CPU(Atom N450,1 核 2 线程)太慢,无法实时编码全尺寸视频。但是当我尝试使用类似的命令行来播放而不是编码时:

avplay -i the_video.avi -i sound/sticks.wav -map 0:0 -map 1:0

我收到以下错误消息:

avplay version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2003-2014 the Libav developers
  built on Mar 16 2015 13:20:58 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Argument 'sound/sticks.wav' provided as input filename, but 'hyf_enc.mp4' was already specified.

Google"avplay" "was already specified"只提供了源代码结果,没有解决方法。我"ffplay" "was already specified"也尝试过,但大多数有此问题的页面都与覆盖 PNG 有关,而不是多路复用。

我应该如何播放一个文件的音频和另一个文件的视频,并在两者之间进行链接,而不必将它们重新混合到磁盘上的文件中?Ubuntu 存储库中的其他播放器是否可以avplay很好地完成此操作?或者我应该只缩小无损中间文件以使重新混合变得切实可行?

答案1

我的知识基于ffmpeg和工具,据我所知,它们将被 Ubuntu 上的和ffplay取代,它们应该在功能上等效(我们不要争论这种功能等效性有多大)。avconvavplay

我不认为工具接受多个输入。您可以通过管道从ffmpeg(呃,avconv)流式传输到ffplayavplay)。试试这个:

$ avconv -i the_video.avi -i sound/sticks.wav -map 0:0 -map 1:0 - | avplay -

以上是根据您的问题的猜测,但它基于我自己的真实示例,我将其粘贴在下面仅作为参考(是的,我正在使用ffmpegffplay工具):

ffmpeg -f alsa -i hw:0,2 -f v4l2 -i /dev/video0 -f avi pipe:1 | ffplay -

相关内容