我有一些不同时长的视频。我想剪切(删除)所有视频的最后 5 秒。我可以循环使用“ffmpeg”来修剪视频吗?请帮帮我。
答案1
这将让你以秒为单位获得文件的持续时间:
let A=$(avprobe input.webm 2>&1 | grep "^ *Duration: " | sed "s/^ *Duration: \\([0-9:]*\\).*/(((\\1)/" | sed "s/0\\([0-9]\\)/\\1/g" | sed "s/:/)*60+/g")
尽管avprobe
确实返回了秒的分数,但 bash 并不处理分数。所以我只是删除了小于 1 秒的所有内容。
之后你可以轻松地做这样的事情:
let A=$A-5
avconv -i input.webm -t $A -c:v copy -c:a copy output.webm
抱歉,我没有使用ffmpeg
。我之前已经切换到了avconv
,我相信选项应该相同,如果不是,那么根据需要重写它们应该很简单。
此后,问题只在于将整个过程包装在 for 循环中并一次性处理所有文件。