答案 0 :(得分:3)
重新编码:
ffmpeg -ss 10 -i video.mp4 -filter_complex "[0]trim=10,setpts=PTS-STARTPTS[b];[b][0]overlay=shortest=1" -shortest -c:a copy out.mp4
-ss 10
设置从头开始减少的金额。 trim=10
设定了从结尾处削减的金额。这里需要注意的是,由于当前的shortest=1
错误,这可能不适用于2017年的ffmpeg版本。
一种破解转码的黑客方法:
ffmpeg -ss 10 -i video.mp4 -ss 20 -i video.mp4 -c copy -map 1:0 -map 0 -shortest -f nut - | ffmpeg -f nut -i - -map 0 -map -0:0 -c copy out.mp4
根据位置关键帧,开始和结束时的修剪将不完美。首先ss
开始修剪。第二个ss
是starting + ending
trim
答案 1 :(得分:1)
这好一点。
ffmpeg -i "<FILE>" -ss 00:00:10 -to $( echo "$(ffprobe -v 0 -show_entries format=duration -of compact=p=0:nk=1 "<FILE>) - 35" | bc) -c copy "trimmed-output.mp4"
使用ffprobe获取持续时间:ffprobe -v 0 -show_entries format=duration -of compact=p=0:nk=1 "<FILE>
然后通过管道<duration> - 10
到bc
从持续时间中减去10,然后将其用于ffmpeg的-to
参数中。