FFmpeg命令全解析:三步完成视频合并、精准裁剪、英伟达显卡加速

一、裁剪

常规裁剪

根据时长裁剪,常规的裁剪
-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

相关推荐
熊猫钓鱼>_>2 小时前
从零到一:打造“抗造” Electron 录屏神器的故事
前端·javascript·ffmpeg·electron·node·录屏·record
UpYoung!5 小时前
【格式转换工具】专业级多媒体格式转换解决方案——Freemake Video Converter 完全指南:轻量化视频剪辑媒体格式转换
ffmpeg·短视频·实用工具·开源工具·多媒体格式转换·运维必备·视频转换格式
试剂小课堂 Pro1 天前
Ald-PEG-Ald:丙醛与聚乙二醇两端连接的对称分子
java·c语言·c++·python·ffmpeg
MaoSource1 天前
Debian 12 安装 FFmpeg 命令
服务器·ffmpeg·debian
白云千载尽2 天前
交换空间扩容与删除、hugginface更换默认目录、ffmpeg视频处理、清理空间
python·ffmpeg·控制·mpc·navsim
xmRao2 天前
Qt+FFmpeg 实现 PCM 转 WAV
qt·ffmpeg·pcm
eWidget2 天前
Shell循环进阶:break/continue,循环嵌套与优化技巧
运维·开发语言·ffmpeg·运维开发
Knight_AL2 天前
Java + FFmpeg 实现视频分片合并(生成 list.txt 自动合并)
java·ffmpeg·音视频
xmRao4 天前
Qt+FFmpeg 实现 Windows 音频采集
windows·qt·ffmpeg
十年老菜鸟5 天前
麒麟系统安装ffmpeg的过程
ffmpeg