命令
ffmpeg -ss 5:09 -i foo.mkv -to 5:10 -c copy bar.mkv
工作原理完全一样
ffmpeg -ss 5:09 -i foo.mkv -t 5:10 -c copy bar.mkv
这是一个错误吗?
在 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
答案1
真正的答案是它按预期工作。-ss
输入前指定的选项让 ffmpeg 首先搜索该位置,然后以 00:00:00 作为时间戳开始编码。
这意味着,使用 5 分钟进行编码-t
或使用 00:05:00 进行编码都没有关系-to
– 因为您是从 00:00:00 开始的。
如果要从稍后的时间戳开始,请使用-ss
after剪切文件-i
。这样,ffmpeg 将进行编码,但在指定的时间戳开始输出,这使得选项工作如下你希望他们这么做。
答案2
来自 ffmpeg文档
'-t duration (output)' 当输出持续时间达到 duration 后,停止写入输出。duration 可以是秒数,也可以是 hh:mm:ss[.xxx] 格式。
-to 和 -t 互斥,且 -t 优先。
'-to position (output)' 在 position 处停止写入输出。position 可以是秒数,也可以是 hh:mm:ss[.xxx] 格式。
-to 和 -t 互斥,且 -t 优先。