ffmpeg:剪切视频但长度错误

nat*_* wu 5 ffmpeg

我正在使用 ffmpeg 来剪切视频。这里是输入信息:

    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 5113 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Run Code Online (Sandbox Code Playgroud)

这是我使用的命令:

    ffmpeg -y -ss 10 -t 5 -i test.mp4 -c copy output.mp4
Run Code Online (Sandbox Code Playgroud)

但输出持续时间约为9.66秒。

当我删除“-c copy”选项或输入不包含“tv,bt709”标签时,它起作用了。但速度较慢。

我想知道如何使用“-c copy”并获得我需要的正确视频片段?

Nin*_*ham 10

在我的情况下,我不使用-c copy但仍然收到不正确的持续时间。经查,是“视频章节”造成的。因此禁用章节-map_chapters -1将输出正确的持续时间。

ffmpeg -ss 04:20 -to 04:41 -i "$input_file" -c:a aac -c:v h264_videotoolbox -b:v 29445k -map_chapters -1 "output.mp4"
Run Code Online (Sandbox Code Playgroud)
-ss 04:20              : From
-to 04:41              : To
-i "$input_file"       : Input file
-c:a aac               : Set AAC codec for audio output
-c:v h264_videotoolbox : h264 hw encoder on Mac
-b:v 29445k            : Output video bitrate
-map_chapters -1       : Disable video chapters
"output.mp4"           : Output file
Run Code Online (Sandbox Code Playgroud)


小智 0

来自 ffmpeg 文档:

-t 持续时间(输入/输出) 当用作输入选项(在 -i 之前)时,限制从输入文件读取数据的持续时间。

当用作输出选项时(在输出 url 之前),在其持续时间达到持续时间后停止写入输出。

持续时间必须是持续时间规范,请参阅 ffmpeg-utils(1) 手册中的 (ffmpeg-utils)持续时间部分。

鉴于此,如果您想要 5 秒的视频流,请尝试指定您想要从输入文件读取的持续时间(在 -i 标记之前)以及您想要从最终输出文件读取的持续时间(在输出 url 之前)