我一直在研究适用于 Linux 的不同视频剪切命令行工具,但似乎找不到任何支持从末尾剪切视频操作的工具。
例如,我有 10 个长度不定的视频。我需要获取每个视频的最后 3 秒。
我研究了 ffmpeg 和 mpgtx,但无济于事。
有人能告诉我从结束位置剪切视频的工具/命令吗?
任何帮助深表感谢。
答案1
以下可能不是最优雅的方法,但它确实有效。
为了方便起见,将文件名插入到变量中:
file="yourvideo.avi"
获取视频长度 -3 秒(sed
命令中设置 -3 - 我们在最后剪切ID_LENGTH=
并添加):-3
start=$(mplayer -identify -vo dummy -ao dummy -really-quiet "$file" 2>/dev/null | sed -n '/ID_LENGTH=/s/ID_LENGTH=\(.*\)/\1-3/p' | bc)
你可以用AVPROBE 系统或者ffprobe(由 avconv 或 ffmpeg 提供):
start=$(avprobe -i "$file" -show_format 2> /dev/null | sed -n '/duration=/s/duration=\(.*\)/\1-3/p' | bc)
切割FFmpeg(ffmpeg
) 或者利巴夫(avconv
)的起始位置为$start
:
avconv -ss $start -t 3 -i $file -vcodec copy -acodec copy end_${file}