FFMpeg 将特定时间的视频和音频合并到另一个视频中

FFMpeg merge video and audio at specific time into another video

我有一个标准的mp4(音频+视频) 我正在尝试将 1.4 秒的迷你 mp4 剪辑合并到此曲目中,将视频替换为迷你剪辑的长度,但在特定时间将音频合并在一起

有人知道如何使用 ffmpeg 做到这一点吗?

我尝试了很多不同的过滤器,但似乎无法得到我想要的


                          V <------->
miniclip.mp4              A <=======>
             V <----------->  ↓ + ↓  <--->
standard.mp4 A <=========================>

已编辑(现在我理解了问题):

First Get 1.4 seconds of standard.mp4 and audio1.mp3

-ss 是获取长度为 1.4 秒的小视频的开始(使用 -t 选项您可以指定持续时间,在本例中为 1.4 秒)摘要:从 min 5, 1.4 秒开始剪切视频 -an 用于音频 none 复制,因为您要添加新的 audio1.mp3

video_only.mp4

ffmpeg -ss 00:05:00 -i standard.mp4 -t 1.4 -map 0:v -c copy -an small_only_video.mp4

audio_only.mp4

ffmpeg -ss 00:05:00 -i audio1.mp3 -t 1.4 -c copy small_only_audio.mp3

现在您可以创建 small_clip_audiovideo.mp4

ffmpeg -i small_only_video.mp4 -c:a mp3 -i small_only_audio.mp3     -c copy -map 0:v -map 1:a:0   -disposition:a:0 default  -disposition:a:1 default  -strict -2 -sn -dn -map_metadata -1 -map_chapters -1  -movflags faststart small_clip_audiovideo.mp4

在时间戳 5 处显示 miniclip.mp4(1.4 秒长)的示例。

ffmpeg -i main.mp4 -i miniclip.mp4 -filter_complex "[0:v]drawbox=t=fill:enable='between(t,5,6.4)'[bg];[1:v]setpts=PTS+5/TB[fg];[bg][fg]overlay=x=(W-w)/2:y=(H-h)/2:eof_action=pass;[1:a]adelay=5s:all=1[a1];[0:a][a1]amix" output.mp4
  • drawbox 用黑色覆盖主视频。仅当 miniclip.mp4 的宽度或高度小于 main.mp4 时才需要。如果 miniclip.mp4 宽度和高度≥ main.mp4,则可以省略它。或者,您可以使用 scale2ref 过滤器使 miniclip.mp4 具有与 main.mp4.

    相同的宽度和高度
  • setptsminiclip.mp4 视频添加 5 秒偏移量。

  • overlaymain.mp4 视频上叠加 miniclip.mp4 视频。

  • adelayminiclip.mp4 音频添​​加 5 秒延迟。

  • amix 混合 miniclip.mp4main.mp4 音频。​​

更多信息

                          V <------->
miniclip.mp4              A <=======>
             V <----------->  ↓ + ↓  <------->
standard.mp4 A <=============================>

               |--|--|--|--|--|--|--|--|--|--|
               0  1  2  3  4  5  6  7  8  9 10  

           standard.mp4 have 10 seconds (aprox) of duration, have audio and video

           miniclip.mp4 have 03 seconds (aprox) of duration, have video and audio

ffmpeg -i standard.mp4 |
                        } have same codes of video and audio?*
ffmpeg -i miniclip.mp4 |
  • 如果文件standard.mp4和miniclip.mp4不是同一个音频代码或视频代码,如果你想要一个好的作品,你将重新编码继续。

ffmpeg -ss 00:00:00 -i standard.mp4 -t 4 -c copy 01.part_project.mp4

  • 和 7 到 10,在 03.part_project.mp4

    ffmpeg -ss 00:00:04.000 -i standard.mp4 -t 3.0000 -c copy 03.part_project.mp4

  • 更改名称或创建 miniclip.mp4 的副本到 02.part_project.mp4

    cp miniclip.mp4 02.part_project.mp4

(standard.mp4中4秒到7秒的部分如果选择OPTION 2只复制音频,将被使用,santadard_part2_audio.mp4)

现在选项 N 1:联系(联合)3 个视频部分

创建文件夹“option1”并复制01.part_project.mp4 02.part_project.mp4 03.part_project.mp4

mkdir option1 && cp 01.part_project.mp4 02.part_project.mp4 03.part_project.mp4 ./option1 && cd ./option1

现在你将 01.part_project.mp4 + 02.part_project.mp4 + 03.part_project.mp4 连接成一个独特的文件 fin_option1.mp4

ffmpeg -f concat -safe 0 -i <(for f in ./*.mp4; do echo "file '$PWD/$f'"; done) -c copy fin_option1.mp4



                          V <------->
miniclip.mp4              A <=======>
             V <----------->  ↓ + ↓  <------->
standard.mp4 A <============XXXXXXXXX========>

               |--|--|--|--|--|--|--|--|--|--|
               0  1  2  3  4  5  6  7  8  9 10  

  • 第二种选择是联系(联合)3 个视频部分,但混合 santadard_part2_audio.mp4

    的 miniclip.mp4 音频

    从santadard_part2_audio.mp4获取音频流并获取音频 仅来自 miniclip.mp4

    的文件

    ffmpeg -i santadard_part2_audio.mp4 -map 0:a -c copy -vn -strict -2 mix_audio_santadad.mp4


ffmpeg -i miniclip.mp4 -map 0:a -c copy -vn -strict -2 mix_audio_miniclip.mp4

将所有音频**合而为一,然后将 miniclip.mp4 中的视频放入


ffmpeg -i mix_audio_miniclip.mp4 -i mix_audio_santadad.mp4 -filter_complex amix=inputs=2:duration=longest -strict -2  audio_mixed_miniclip.mp4

仅从 miniclip.mp4 获取视频


ffmpeg -i miniclip.mp4 -c copy -an miniclip_video.mp4

并获得 miniclip 但混合音频,我认为这是您正在寻找的解决方案


ffmpeg -i miniclip_video.mp4  -i audio_mixed_miniclip.mp4   -c copy -map 0:v -map 1:a:0  -disposition:a:0 default  -disposition:a:1 default  -strict -2 -sn -dn -map_metadata -1 -map_chapters -1  -movflags faststart 02.part_project_OPTION2.mp4 




                     santadard_part2_audio.mp4  
                           + 
                        audio_miniclip.mp4

                          V <------->
miniclip.mp4              A <MMMMMMMM> (audio miniclip mixed with standard.mp4)
             V <----------->  ↓ + ↓  <------->
standard.mp4 A <============         ========>

               |--|--|--|--|--|--|--|--|--|--|
               0  1  2  3  4  5  6  7  8  9 10 

创建文件夹“option2”并复制01.part_project.mp4 02.part_project_OPTION2.mp4 03.part_project.mp4

mkdir option2 && cp 01.part_project.mp4 02.part_project_OPTION2.mp4 03.part_project.mp4 ./option2 && cd ./option2

ffmpeg -f concat -safe 0 -i <(for f in ./*.mp4; do echo "file '$PWD/$f'"; done) -c copy fin_option2.mp4

注意事项 ** 您可以使用大量音频操作 https://trac.ffmpeg.org/wiki/AudioChannelManipulation