gpt4 book ai didi

audio - 将各种音频和视频源混合成一个视频

转载 作者:行者123 更新时间:2023-12-04 23:11:39 26 4
gpt4 key购买 nike

我已经阅读了FFmpeg - Overlay one video onto another video? , How to overlay 2 videos at different time over another video in single ffmpeg command? , FFmpeg - Multiple videos with 4 areas and different play times (以及许多类似的问题标记为 [ffmpeg] 关于 setpts )和 以下代码正在运行 ,但我相信我们可以简化它,并有一个更优雅的解决方案。
我想混合多个来源(图像和声音),起点不同:

t (seconds)           0   1   2   3   4   5   6   7   8   9  10  11  12  13    
test.png [-------------------------------]
a.mp3 [-------]
without_sound.mp4 [-------------------] (overlay at x,y=200,200)
b.mp3 [---]
with_sound.mp4 [---------------------------------------] (overlay at x,y=100,100)
这有效:
ffmpeg -i test.png 
-t 2 -i a.mp3
-t 5 -i without_sound.mp4
-t 1 -i b.mp3
-t 10 -i with_sound.mp4
-filter_complex "
[0]setpts=PTS-STARTPTS[s0];
[1]adelay=2000^|2000[s1];
[2]setpts=PTS-STARTPTS+7/TB[s2];
[3]adelay=5000^|5000[s3];
[4]setpts=PTS-STARTPTS+3/TB[s4];
[4:a]adelay=3000^|3000[t4];
[s1][s3][t4]amix=inputs=3[outa];
[s0][s4]overlay=100:100[o2];
[o2][s2]overlay=200:200[outv]
" -map [outa] -map [outv]
out.mp4 -y
但:
  • 我们必须同时使用 setpts 是否正常? adelay ?我试过没有adelay然后声音不移动。换句话说,有没有办法简化:
    [4]setpts=PTS-STARTPTS+3/TB[s4];
    [4:a]adelay=3000^|3000[t4];
    ?
  • 有没有办法用 setptsasetpts只要?当我更换 adelay=5000|5000asetpts=PTS-STARTPTS+5/TB而且对于另一个,它没有给出预期的时移(见下文)
  • 在我经常看到的类似问题/答案中overlay=...:enable='between(t,...,...)' ,这里好像不需要,为什么?

  • 更一般地说,您将如何简化这种“混合多个音频和视频” ffmpeg代码?

    关于第二个要点的更多细节:如果我们替换 adelay通过 asetpts ,
    -filter_complex "
    [0]setpts=PTS-STARTPTS[s0];
    [1]asetpts=PTS-STARTPTS+2/TB[s1];
    [2]setpts=PTS-STARTPTS+7/TB[s2];
    [3]asetpts=PTS-STARTPTS+5/TB[s3];
    [4]setpts=PTS-STARTPTS+3/TB[s4];
    [4:a]asetpts=PTS-STARTPTS+3/TB[t4];
    [s1][s3][t4]amix=inputs=3[outa];
    [s0][s4]overlay=100:100[o2];
    [o2][s2]overlay=200:200[outv]
    它不起作用:[3] 应该从 0'05"开始,而 [4:a] 应该从 0'03"开始,但它们都与 [1] 同时开始,即在 0'02"。
    看来 amix只取第一个 asetpts考虑,并放弃其他;是真的吗?

    最佳答案

    is it normal that we have to use both setpts and adelay?


    是的,前者用于视频流;后者,用于音频。 asetpts 不适合与 amix 一起使用,因为后者忽略了开始时间偏移。 adelay 填充从 0 到所需偏移量的静音。

    I often see overlay=...:enable='between(t,...,...)', here it seems it is not needed, why?


    Overlay 通过时间戳同步其主要和覆盖视频帧。 enable如果希望在同步帧可用于两个输入时禁用覆盖,则需要。

    关于audio - 将各种音频和视频源混合成一个视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66256414/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com