【问题标题】:FFMpeg merge video and audio at specific time into another videoFFMpeg 将特定时间的视频和音频合并到另一个视频中
【发布时间】:2021-09-21 21:51:57
【问题描述】:

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

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

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


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

【问题讨论】:

    标签: audio ffmpeg mp4


    【解决方案1】:

    已编辑(现在我明白了这个问题):

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

    -ss 是获取长度为 1.4 秒的小视频的开始(使用 -t 选项您可以指定持续时间,在本例中为 1.4 秒)摘要:从 5 秒开始剪切视频,1.4 秒 -an 用于音频无副本,因为您要添加新的 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
    

    【讨论】:

    • 这似乎不起作用,我希望audio1.mp3是一个mp4,并在1.4秒的小片段长度处替换standard.mp4视频,你知道怎么做这样做?
    • 感谢@Stevejobs 到目前为止的帮助,所以我相信这会从一个获取视频,从另一个获取音频,然后将两者结合起来?我正在寻找合并两者的音频,并用迷你剪辑替换来自standard.mp4的视频,因此在迷你剪辑的持续时间内替换主mp4的视频,但合并音频,我可以给出一个如果需要,例如?
    • 我已经更新了主帖,希望更有意义,任何回复将不胜感激:)
    【解决方案2】:

    在时间戳 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 秒的偏移量。

    • 叠加miniclip.mp4视频叠加在main.mp4视频之上。

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

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

    更多信息

    【讨论】:

    • 嘿,如果我现在移除drawbox并得到这个:-filter_complex "[1:a]adelay=5s:all=1[a1];[0:a][a1]amix " output.mp4 我得到错误: 未找到可选的所有错误 使用 args '5s:all=1' 初始化过滤器'adelay' 如果我删除所有 = 1,我只会在开始时得到小剪辑,也不会替换视频,有什么想法吗?
    • @LugIa 你的 ffmpeg 太旧了。
    • 绝对的天才,谢谢!添加多个迷你剪辑时,它会大大降低音频质量 - 你知道如何解决这个问题吗?或者可能将多个剪辑合并到一个命令中?
    • 所以最终你的命令效果很好,我只是使用 python 脚本在略有不同的时间范围内进行迭代,直到我有一个包含多个迷你剪辑的“完整视频”。只是音频质量很差
    • 我已经尝试了很多不同的选项,例如 -acodec 复制和各种 -crf 设置,尽管似乎没有任何东西可以保持音频质量 - 有什么想法吗?
    【解决方案3】:
                              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

    (如果您选择选项 2 仅复制音频 santadard_part2_audio.mp4,将使用standard.mp4 的 4 秒到 7 秒部分)

    现在选项 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 复制 -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

    注意事项 ** 你可以使用很多音频操作https://trac.ffmpeg.org/wiki/AudioChannelManipulation

    【讨论】:

    • 试图解决这个问题,所以这会在主视频中空白,然后在顶部添加另一个视频?
    猜你喜欢
    • 2016-06-13
    • 2019-03-30
    • 2018-12-27
    • 2021-03-14
    • 2021-11-20
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多