gpt4 book ai didi

用于自动视频分割和缩略图创建的 FFMPEG 命令

转载 作者:行者123 更新时间:2023-12-04 23:35:01 29 4
gpt4 key购买 nike

我正在尝试编写一个 FFMPEG 命令:

  • 取为 输入 一个视频 input.mp4 和一个图像 pic.jpg
  • 作为 输出 将 input.mp4 拆分为 20 秒的视频,按顺序重命名;对于每个分割视频,它会通过复制 pic.jpg、在其上写入相应的订单号并以相同的订单号作为名称保存来创建一个缩略图图像。

  • 举个例子,下面是运行脚本后文件夹应该包含的内容:
    input.mp4 <-- video to be splitted
    pic.jpg <-- Base for thumbnail

    [0].mp4 <-- first 20 seconds of input.mp4
    [0].jpg <-- thumbnail image with "0" printed on

    [1].mp4 <-- second 20 seconds of input.mp4
    [1].jpg <-- thumbnail image with "1" printed on

    ... and so on
    这是我现在的命令:
    ffmpeg -i input.mp4 -i pic.jpg -f segment -segment_time 20 -map 0:a -map 0:v -vcodec copy -reset_timestamps 1 output[%d].mp4 -map 1:v -vf "drawtext=text=%d:fontcolor=white:fontsize=75:x=1002:y=100:" pic[%d].jpeg
    但给出了多个问题:
  • %d drawtext 无法识别(它在 d 之前表示杂散百分比)
  • 如果我删除 %d从 drawtext (用 'Exampletext' 替换它),脚本正确分割视频,但只创建 pic[1].jpg,上面没有任何文字。似乎没有创建其他 .jpg 文件。

  • 通知
    我不能使用 bash 脚本或类似的脚本

    最佳答案

    tl;博士——没有办法。可能分3个步骤。

    %d is not recognized by drawtext (it says stray % before d)


    因为它不应该。在其文档中没有任何地方谈论它支持 c-printf 格式字符串。

    If I remove %d from drawtext (substituting it with 'Exampletext'), the script splits correctly the video, but creates only pic[1].jpg, without anything written on it. No other .jpg files seem to be created.


    这是 pic.jpg 的预期行为输入流在 1 帧后消失(因为它是静态图片 = 只有 1 帧长)。您可以循环输入图像(查找 image2 解复用器文档),但您必须提前知道要生成的段数(更不用说这是一个有争议的问题,因为预期的 drawtext 操作是否去)。
    我能想到的唯一解决方法是分 3 步执行此操作:
  • 调用FFmpeg来做segment职位
  • 计算创建的片段数,并创建一个字幕文件(.srt 就足够了)。每个段计为每个占用 1 秒。
  • 再次使用 pic.jpg 调用 FFmpeg输入,循环它以产生与 1-fps 帧速率的段数匹配的帧数。使用subtitle过滤以刻录字幕中指定的片段编号。

  • 显然,在脚本中自动执行上述操作很有意义,但上述操作可以手动完成,比单独为每个缩略图编号要少得多。

    关于用于自动视频分割和缩略图创建的 FFMPEG 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72098717/

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