gpt4 book ai didi

ffmpeg,将静态图像添加到过渡的开头和结尾

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

ffmpeg noob 在这里,试图帮助我母亲制作一些房地产演练视频。我想建立一个简单的管道,我可以通过它运行视频并输出如下:

  • 5 秒(无声)标题卡 ->
  • xfade 过渡 ->
  • 属性(property)介绍 ->
  • xfade 过渡 ->
  • 5 秒(无声)标题卡

  • 注意事项:
  • 介绍/结尾卡将是相同的内容。
  • 输入的演练视频将具有可变长度,因此,如果可能的话,考虑到这一点的动态解决方案将是理想的。如果这需要我使用 ffprobe 编写脚本,我可以做到——只需要了解操作的语法和顺序。
  • 视频剪辑将带有一些已经覆盖的音频。我希望标题卡保持静音,并让视频/音频剪辑一起淡入/淡出。

  • 我得到了一个没有过渡的样本:
    ffmpeg -loop 1 -t 5 -i title_card.jpg \
    -i walkthrough.MOV \
    -f lavfi -t 0.1 -i anullsrc \
    -filter_complex "[0][2][1:v][1:a][0][2]concat=n=3:v=1:a=1[v][a]" \
    -map "[v]" -map "[a]" \
    -vcodec libx265 \
    -crf 18 \
    -vsync 2 \
    output_without_transitions.mp4
    我一直无法让它与过渡一起工作。最新版本见下文:
    ffmpeg -loop 1 -t 5 -r 60 -i title_card.jpg \
    -r 60 -i walkthrough.MOV \
    -f lavfi -t 0.1 -i anullsrc \
    -filter_complex \
    "[0][1:v]xfade=transition=fade:duration=0.5:offset=4.5[v01]; \
    [v01][0]xfade=transition=fade:duration=0.5:offset=12.8[v]" \
    -map "[v]" \
    -vcodec libx265 \
    -crf 18 \
    -vsync 2 \
    output_with_transitions.mp4
    这一半有效,导致初始标题卡淡入视频,但第二个标题卡从未出现。请注意,我还删除了对音频的任何引用,以使过渡单独工作。
    我一直在努力解决这个问题,所以我们将不胜感激:)

    最佳答案

    假设 walkthrough.MOV 是 10 秒长:

    ffmpeg -loop 1 -t 5 -framerate 30 -i title_card.jpg -i walkthrough.MOV -filter_complex "[0]settb=AVTB,split[begin][end];[1:v]settb=AVTB[main];[begin][main]xfade=transition=fade:duration=1:offset=4[xf];[xf][end]xfade=transition=fade:duration=1:offset=13,format=yuv420p[v];[1:a]adelay=4s:all=1,afade=t=in:start_time=4:duration=1,afade=t=out:start_time=13:duration=1,apad=pad_dur=4[a]" -map "[v]" -map "[a]" -c:v libx265 -crf 18 -movflags +faststart output.mp4
  • 您需要升级 ffmpeg 才能使其正常工作。当前版本(截至本答案的 4.3)太旧了,所以从 git master 分支获取构建。请参阅 FFmpeg Download 以获取指向您的操作系统构建的链接,或参阅 FFmpeg Wiki: Compile Guide
  • title_card.jpg 帧速率、宽度和高度必须与 walkthrough.MOV 匹配。
  • 请参阅 Merging multiple video files with ffmpeg and xfade filter 了解如何计算 xfade 和 afade 偏移量。
  • 有关每个过滤器的详细信息,请参见 FFmpeg Filter documentation
  • 请参阅 How to get video duration in seconds?,它可以帮助您通过脚本自动执行此操作。
  • apad 应该自动与 -shortest 一起使用,但它不能与 -filter_complex 一起使用。所以 pad_dur 用于为最后一个标题图像添加额外的静音,但如果这对您来说更容易,可以使用 whole_dur 代替。另一种方法是在您的问题中使用 anullsrc,然后仅使用 concat 过滤器连接音频,但我想展示 adelay+apad 作为可行的替代方案。
  • 关于ffmpeg,将静态图像添加到过渡的开头和结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66616969/

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