ffmpeg -to 和 -t 选项有什么区别?

Van*_*tuz 4 ffmpeg

命令

ffmpeg -ss 5:09 -i foo.mkv -to 5:10 -c copy bar.mkv
Run Code Online (Sandbox Code Playgroud)

完全一样

ffmpeg -ss 5:09 -i foo.mkv -t 5:10 -c copy bar.mkv
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?

在 Windows 64 位上使用 Zeranoe git-bd75651

>ffmpeg -version
ffmpeg version N-57906-gbd75651
built on Nov  4 2013 18:09:19 with gcc 4.8.2 (GCC)
configuration: --disable-static --enable-shared --enable-gpl --enable-version3 -
-disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enabl
e-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --ena
ble-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmo
dplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb
--enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger
--enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enab
le-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis -
-enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-li
bxvid --enable-zlib
libavutil      52. 51.100 / 52. 51.100
libavcodec     55. 41.100 / 55. 41.100
libavformat    55. 21.100 / 55. 21.100
libavdevice    55.  5.100 / 55.  5.100
libavfilter     3. 90.101 /  3. 90.101
libswscale      2.  5.101 /  2.  5.101
libswresample   0. 17.104 /  0. 17.104
libpostproc    52.  3.100 / 52.  3.100
Run Code Online (Sandbox Code Playgroud)

slh*_*hck 7

真正的答案是它按预期工作。-ss在输入之前指定的选项让 ffmpeg 首先寻找该位置,然后在 00:00:00 开始编码作为时间戳。

这意味着您使用-t00:05:00编码 5 分钟或编码至 00:05:00都无关紧要,-to因为您是从 00:00:00 开始的。

如果要在较晚的时间戳开始,请使用-ssafter剪切文件-i。这样, ffmpeg 将编码,但在指定的时间戳开始输出,这使得选项按您的预期工作。


med*_*eda 5

来自 ffmpeg文档

'-t duration (output)' 在其持续时间达到持续时间后停止写入输出。持续时间可以是一个以秒为单位的数字,也可以是 hh:mm:ss[.xxx] 形式。

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

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

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

  • 我仍然不明白,因为这两个选项给出了相同的结果:5:12 长度的视频 (3认同)
  • @Vantuz 不,这不是错误,它们的工作方式相似,但不同之处是 `-t` 在提供的持续时间后停止写入输出,而 `-to` 将在给定的位置停止 (2认同)
  • 我发现我们需要将“-to”移到“-i”选项之前。它将停止为相对于输入文件的位置。 (2认同)