ffmpeg使用-ss和-to进行部分转码

时间:2015-02-12 11:22:43

标签: command-line ffmpeg transcode

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

  

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

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

  

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

     

-to和-t是互斥的,-t具有优先权。

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

1 个答案:

答案 0 :(得分:5)

来自FFmpeg Wiki

  

请注意,如果仅在-ss之前指定-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,以便时间戳不会重置。