gpt4 book ai didi

python - 叠加两个视频时的音频问题 (ffmpeg)

转载 作者:行者123 更新时间:2023-12-04 23:20:13 28 4
gpt4 key购买 nike

我试图在 2 分钟的视频上叠加一个 10 秒的短视频,并让 10 秒的视频显示在 30 秒的标记处。这是我到目前为止所拥有的

start = 30
subprocess.run(
f'ffmpeg -y \
-i {os.path.join(path, "2minutevideo.mp4")} \
-i {os.path.join(path, "popup.mov")} \
-filter_complex \
"[0:v]setpts=PTS-STARTPTS[v0]; \
[1:v]setpts=PTS-STARTPTS+{notify_start}/TB[v1]; \
[v0][v1]overlay=enable=\'between(t, {notify_start}, {notify_start + get_duration(os.path.join(path, "popup.mp4"))})\' [out1]" \
{render_flags} -r 24 -map 1:a -map [out1] -async 1 \
{os.path.join(source_folder, "test.mp4")}')
这样做的原因是 popup.mov 在 30 秒后出现并在其整个持续时间内播放。但是,我有两个问题:
  • popup.mov 的音频仍然在开始播放。我已经尝试了它的偏移量,设置了 pts,但两者似乎都不起作用或有错误。
  • 唯一播放的音频是 popup.mov 的音频。我希望 2minutevideo 和 popup.mov 都播放音频。是的,我知道这是因为 -map 1:a 仅将弹出窗口的音频映射到最终视频,但我不知道如何同时播放音频。我必须混合它吗?

  • 谢谢

    最佳答案

    添加 adelayamix过滤器:

    start = 30
    subprocess.run(
    f'ffmpeg -y \
    -i {os.path.join(path, "2minutevideo.mp4")} \
    -i {os.path.join(path, "popup.mov")} \
    -filter_complex \
    "[0:v]setpts=PTS-STARTPTS[v0]; \
    [1:v]setpts=PTS-STARTPTS+{notify_start}/TB[v1]; \
    [v0][v1]overlay=enable=\'between(t, {notify_start}, {notify_start + get_duration(os.path.join(path, "popup.mp4"))})\' [out1]; \
    [1:a]adelay={notify_start}s:all=1[a1];[0:a][a1]amix[a]"
    {render_flags} -r 24 -map [out1] -map [a] -async 1 \
    {os.path.join(source_folder, "test.mp4")}')
    这纯粹是一个ffmpeg问题。 python代码只是噪音。如果路上没有任何 python ,您可能会更快地得到答案。

    关于python - 叠加两个视频时的音频问题 (ffmpeg),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68606535/

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