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

Sha*_*run 1 transcode command-line ffmpeg

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

ffmpeg.exe -ss start-time -i 源文件 -t duration -y -s 640x360 -b:v 1024k -vcodec libx264 -r 29.7 -movflags faststart -pix_fmt yuv420p outputfile

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

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

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

但是,当我试图以诚代替"-t",输出是一样的,我的意思后的值-to被当作了把视频的持续时间.我认为它会像结束时间那样对待价值.我错过了什么吗?

slh*_*hck 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
Run Code Online (Sandbox Code Playgroud)

这里,第一个命令将从00:01:00切换到00:03:00(原始),而第二个命令将按照预期从00:01:00切换到00:02:00.

因此,请确保-ss在输入后放置,以便不重置时间戳.