将音频从一个视频文件粘贴到另一个具有已知时间偏移的视频文件中

将音频从一个视频文件粘贴到另一个具有已知时间偏移的视频文件中

我有两个视频文件,它们也带有音轨。我想将一个文件的音轨复制到另一个文件,时间偏移量为 5000 毫秒。

唯一的问题是视频文件的持续时间不一样,所以如果音频在视频之前开始或在视频之后结束,我希望生成的视频文件在开始/结束处有空白帧。

我正在寻找可以在 Linux 上使用的命令行解决方案,例如 ffmpeg、mencoder 等。

编辑:运行 ffmpeg -i 1.mp4 -i 2.mp4

ffmpeg version 0.8.9-4:0.8.9-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
  built on Nov  9 2013 19:08:00 with gcc 4.6.3
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-06-15 03:58:00
  Duration: 00:06:49.29, start: 0.000000, bitrate: 3009 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720, 2814 kb/s, 25 fps, 25 tbr, 50 tbn, 50 tbc
    Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 192 kb/s
    Metadata:
      creation_time   : 2013-06-15 03:58:05
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '2.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-06-15 17:25:15
  Duration: 00:06:59.09, start: 0.000000, bitrate: 3159 kb/s
    Stream #1.0(und): Video: h264 (High), yuv420p, 1280x720, 2965 kb/s, 25 fps, 25 tbr, 50 tbn, 50 tbc
    Stream #1.1(und): Audio: aac, 44100 Hz, stereo, s16, 192 kb/s
    Metadata:
      creation_time   : 2013-06-15 17:25:21
At least one output file must be specified

答案1

好的。假设您有1.mp4- 持续时间为 30 秒的视频,2.mp4- 持续时间为 30 秒的视频,并且您想将音频插入偏移量为 5 秒的视频2.mp41.mp4。并且当视频流结束时,您还需要黑色视频帧1.mp4。因此命令应该是这样的:

ffmpeg -i 1.mp4 -i 2.mp4 -f lavfi -i "color=black:size=1920x1080:duration=5" \
-filter_complex \
"[0:v][2:v]concat[video_out]; \
 [0:a]atrim=duration=5[a1]; \
 [a1][1:a]concat=v=0:a=1[audio_out]" \
-map [video_out] -map [audio_out] out.mp4

此命令执行以下操作 - 我们将1.mp42.mp4作为输入,并使用 lavfi 生成 5 秒的黑帧视频。您的输入视频可能有其他大小,因此对 lavfi 使用与和相同的大小1.mp42.mp4更改1920x1080为您的输入的大小)。

然后我们将1.mp4其与 lavfi 的黑色框架结合起来concat,然后我们剪掉前5秒的1.mp4音频atrim并将其与来自 的音频流合并2.mp4concat再次)。然后只需指定我们想要的输出流out.mp4

希望能帮助到你。

相关内容