1

我正在尝试使用 ffmpeg 实现部分转码。我目前使用的命令是:

ffmpeg.exe -ss开始时间 -i 源文件-t持续时间 -y -s 640x360 -b:v 1024k -vcodec libx264 -r 29.7 -movflags faststart -pix_fmt yuv420p 输出 文件

在 ffmpeg 文档中,我读到了 -to 参数:

-to position (output) 停止在位置写入输出。position 可以是以秒为单位的数字,也可以是 hh:mm:ss[.xxx] 形式。

-to 和 -t 互斥,-t 具有优先级。

但是当我尝试-to代替 "-t" 时,输出是相同的,我的意思是-to之后的值被视为输出视频的持续时间。我认为它会将价值视为结束时间。我错过了什么吗?

4

1 回答 1

7

来自FFmpeg 维基

请注意,如果您仅指定-ssbefore -i,时间戳将重置为零,因此 -t 和 -to 具有相同的效果:

ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy cut.mp4
ffmpeg -i video.mp4 -ss 00:01:00 -to 00:02:00 -c copy cut.mp4

在这里,第一个命令将从 00:01:00 剪切到 00:03:00(在原始版本中),而第二个命令将按照预期从 00:01:00 剪切到 00:02:00。

所以,确保你把-ss输入放在后面,这样时间戳就不会被重置。

于 2015-02-12T20:49:10.323 回答