gpt4 book ai didi

ffmpeg - 使用 FFmpeg 精确切割 mp4 文件

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

我想剪切 mp4 视频以按秒分隔视频
在示例中:

00:00:00 - 00:00:01
00:00:01 - 00:00:02
00:00:02 - 00:00:10.01

这是我使用的命令:
ffmpeg.exe -i 10sec.mp4 -ss 00:00:00 -t 00:00:01 -async 1 -strict -2 -c copy 0002.mp4
ffmpeg.exe -i 10sec.mp4 -ss 00:00:01 -t 00:00:02 -async 1 -strict -2 -c copy 0003.mp4
ffmpeg.exe -i 10sec.mp4 -ss 00:00:02 -t 00:00:10.01 -async 1 -strict -2 -c copy 0004.mp4

我得到的文件是:
1.3秒长
2.6秒长
8.5秒长

所以显然切割它不准确......

我知道这与关键帧有关,所以我想解压缩原始文件(质量非常高的 mpeg)根本不压缩(所以每一帧都是关键帧),然后对其进行剪切(所以现在切割将是准确的)

准确性对我来说如此重要的原因是因为在剪辑之后我必须将切片重新加入到单个电影中,而目前我只是在从切片创建的电影中复制。

我尝试了 .avi 版本:
..\ffmpeg.exe -i 10sec.mp4 -vcodec rawvideo -acodec copy uncompressed.mp4

这显然是失败的二人组:
 [mp4 @ 091f1300] Could not find tag for codec rawvideo in stream #0, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:0 --

所以我的q。是,我怎样才能准确地使用 ffmpeg 对文件进行切片? (我有 pkt_pts 以及我想要切片的时间,所以如果可以精确切割 pkt_pts 它也会帮助我)?

最佳答案

该错误表示 MP4 不支持未压缩的视频。所以你最好使用 AVI 容器并指定像素格式:

..\ffmpeg.exe -i 10sec.mp4 -vcodec rawvideo -pix_fmt bgr24 -acodeccopy uncompressed.avi


然后你就可以对未压缩的.avi文件进行帧/时间精确切割。
这对我来说是这样的:
  • 使用无损转码从原始视频 (Imagine.mp4) 中剪切仅视频部分

  • ffmpeg -i Imagine.mp4 -ss 00:00:00.00 -t 00:00:05 -c:v libx264 -crf 0 -preset ultrafast -an Imagine_part0.mp4

    ffmpeg -i Imagine.mp4 -ss 00:00:05.00 -t 00:00:05 -c:v libx264 -crf 0 -preset ultrafast -an Imagine_part1.mp4

    ffmpeg -i Imagine.mp4 -ss 00:00:10.00 -c:v libx264 -crf 0 -preset ultrafast -an Imagine_part2.mp4


  • 无需重新编码即可加入零件

  • ffmpeg -f concat -safe 0 -i files.txt -an -c:v copy -fflags +genpts Imagine_joined.mp4


  • 仅将原始文件中的音频添加到加入的视频中并创建最终输出(视频 + 音频)

  • ffmpeg -i Imagine_joined.mp4 -i Imagine.mp4 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 -shortest -fflags +genpts Imagine_final.mp4


    在第 1 步和第 2 步之间,您通常会将编码转换为目标质量,但为简单起见,我将其省略了。

    关于ffmpeg - 使用 FFmpeg 精确切割 mp4 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60241819/

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