一、裁剪
常規裁剪
根據時長裁剪,常規的裁剪
-c copy
?表示直接復制流(不重新編碼),速度極快,但要求切割時間必須是關鍵幀。否則裁剪下來的畫面開頭/結尾 會模糊花屏
ffmpeg -i input.mp4 -ss 00:00:30 -to 00:01:00 -c copy output.mp4
?
?精確裁剪
(重新編碼確保精度)
-c:v libx264 需要重新編碼,時間上會比較耗時?
ffmpeg -i input.mp4 -ss 00:00:30 -t 30 -c:v libx264 -c:a aac output.mp4
批量裁剪
遇到大量的精確裁剪,單個單個裁剪,明顯比較耗時,需要更高效命令。對同一個源文件,裁剪出不同時間段的視頻分段,耗時跟單個視頻裁剪差不多,但不建議,一下搞太多,容易導致系統資源爆滿 ,通常5~10個即可
ffmpeg -y -i source.mp4 -threads 10 -filter_complex [0:v]trim=start=0.00:end=6.42,setpts=PTS-STARTPTS[v0];[0:a]atrim=start=0.00:end=6.42,asetpts=PTS-STARTPTS[a0];[0:v]trim=start=6.42:end=13.02,setpts=PTS-STARTPTS[v1];[0:a]atrim=start=6.42:end=13.02,asetpts=PTS-STARTPTS[a1];[0:v]trim=start=13.02:end=14.05,setpts=PTS-STARTPTS[v2];[0:a]atrim=start=13.02:end=14.05,asetpts=PTS-STARTPTS[a2]
-map [v0] -map [a0] -c:v libx264 -preset fast -c:a aac source_0_6420.ts -map [v1] -map [a1] -c:v libx264 -preset fast -c:a aac source_6420_13020.mp4?-map [v2] -map [a2] -c:v libx264 -preset fast -c:a aac source_13020_14050.mp4
顯卡加速
在這基礎上,還能繼續提速,使用英偉達\AMD顯卡繼續加速
英偉達加速
-c:v libx264? 換成?-c:v h264_nvenc
-preset fast 換成? -preset p6
再追加 -cq 26
ffmpeg -y -i source.mp4 -threads 10 -filter_complex [0:v]trim=start=0.00:end=6.42,setpts=PTS-STARTPTS[v0];[0:a]atrim=start=0.00:end=6.42,asetpts=PTS-STARTPTS[a0];[0:v]trim=start=6.42:end=13.02,setpts=PTS-STARTPTS[v1];[0:a]atrim=start=6.42:end=13.02,asetpts=PTS-STARTPTS[a1];[0:v]trim=start=13.02:end=14.05,setpts=PTS-STARTPTS[v2];[0:a]atrim=start=13.02:end=14.05,asetpts=PTS-STARTPTS[a2] -map [v0] -map [a0] -c:v h264_nvenc -preset p6 -cq 26 -c:a aac source_0_6420.ts -map [v1] -map [a1] -c:v h264_nvenc -preset p6 -cq 26 -c:a aac source_6420_13020.mp4 -map [v2] -map [a2] -c:v h264_nvenc -preset p6 -cq 26 -c:a aac source_13020_14050.mp4
AMD加速
-c:v libx264? 換成?-c:v?h264_amf
-preset fast 換成? -quality quality
再追加 -rc cqb
?ffmpeg -y -i source.mp4 -threads 10 -filter_complex [0:v]trim=start=0.00:end=6.42,setpts=PTS-STARTPTS[v0];[0:a]atrim=start=0.00:end=6.42,asetpts=PTS-STARTPTS[a0];[0:v]trim=start=6.42:end=13.02,setpts=PTS-STARTPTS[v1];[0:a]atrim=start=6.42:end=13.02,asetpts=PTS-STARTPTS[a1];[0:v]trim=start=13.02:end=14.05,setpts=PTS-STARTPTS[v2];[0:a]atrim=start=13.02:end=14.05,asetpts=PTS-STARTPTS[a2] -map [v0] -map [a0] -c:v h264_nvenc -quality quality -rc cqb -c:a aac source_0_6420.ts -map [v1] -map [a1] -c:v h264_nvenc -quality quality -rc cqb -c:a aac source_6420_13020.mp4 -map [v2] -map [a2] -c:v h264_nvenc -quality quality -rc cqb -c:a aac source_13020_14050.mp4
二、合并
常規合并
?簡單視頻合并命令,不大推薦使用
ffmpeg -i "concat:video1.mp4|video2.mp4|video3.mp4" -c copy output.mp4
批量合并
ffmpeg
-y -i video1.mp4?-i video2.mp4?-filter_complex [0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a] -map [v] -map [a] -c:v libx264 -crf 23 -preset fast -threads 10?合并視頻.mp4
顯卡加速
英偉達
ffmpeg
-y -i video1.mp4?-i video2.mp4?-filter_complex [0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a] -map [v] -map [a] -c:v ?h264_nvenc?-preset p6?-cq 26 -threads 10?合并視頻.mp4
?AMD
ffmpeg
-y -i video1.mp4?-i video2.mp4?-filter_complex [0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a] -map [v] -map [a] -c:v ?h264_amf -quality quality?-rc cqb -threads 10?合并視頻.mp4