gpt4 book ai didi

merge - 用ffmpeg分割、处理和合并文件

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

我正在尝试构建一个应用程序,它将输入视频文件(通常是 mp4)分成多个 block ,以便我可以同时对它们进行一些处理,然后将它们合并回一个文件中。

为此,我概述了 4 个步骤:

  • 以特定间隔强制关键帧,以确保每个
    block 可以单独播放。为此,我使用以下
    命令:
    ffmpeg -i input.mp4 -force_key_frames
    "expr:gte(t,n_forced*chunk_length)" keyframed.mp4

    其中 chunk_length 是每个 block 的持续时间。
  • 将 keyframed.mp4 分成多个 block 。
    这是我遇到问题的地方。我正在使用以下命令:
    `ffmpeg -i keyframed.mp4 -ss 00:00:00 -t chunk_length -vcodec copy -acodec copy test1.mp4`

    从我的关键帧文件中获取第一个 block ,但它没有捕获
    输出正确,因为它似乎错过了第一个关键帧。

    在其他 block 上,输出的持续时间有时也是
    略小于 chunk_length,即使我总是使用
    相同的 -t chunk_length 选项
  • 处理每个 block 对于这个任务,我使用以下
    命令:
    ffmpeg -y -i INPUT_FILE -threads 1 -pass 1 -s 1280x720 -preset
    medium -vprofile baseline -c:v libx264 -level 3.0 -vf
    "format=yuv420p" -b:v 2000k -maxrate:v 2688k -bufsize:v 2688k -r 25
    -g 25 -keyint_min 50 -x264opts "keyint=50:min-keyint=50:no-scenecut" -an -f mp4 -movflags faststart /dev/null
    ffmpeg -y -i INPUT_FILE -threads 1 -pass 2 -s 1280x720 -preset
    medium -vprofile baseline -c:v libx264 -level 3.0 -vf
    "format=yuv420p" -b:v 2000k -maxrate:v 2688k -bufsize:v 2688k -r 25
    -g 25 -keyint_min 50 -x264opts "keyint=50:min-keyint=50:no-scenecut" -acodec libfaac -ac 2 -ar 48000 -ab 128k -f mp4 -movflags faststart OUTPUT_FILE.mp4

    不允许修改此命令,因为我的目标是
    并行化这个过程。
  • 最后,要合并我正在使用的文件 concat 和列表
    第二步的输出,如下:
    ffmpeg -f concat -i mylist.txt -c copy final.mp4

  • 总之,我正在尝试找到一种方法来解决第 2 步的问题,如果有更好的方法来解决这个问题,我也会得到一些意见。

    最佳答案

    我找到了使用以下代码的解决方案,该解决方案无需强制关键帧(它在最近的关键帧上剪切)和多个命令即可分割文件。
    ffmpeg -i test.mp4 -f segment -segment_time chunk_length -reset_timestamps 1 -c copy test%02d.mp4

    关于merge - 用ffmpeg分割、处理和合并文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33595056/

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