说到视频剪辑,我们在用的和想到的都是Premiere、DaVinci这样的专业工具,或更便捷的剪映等。
在做短视频运营过程中,很多时候都会“搬运”视频,会对大量视频进行“轻剪辑”,以实现优化和“去重”的目的。
这时使用专业的剪辑软件,去做简单的、机械重复的剪辑工作,会很繁琐且效率低下。
这样批量剪辑的任务完全可以交给ffmpeg,一行命令,即可完成视频的剪辑。编写一段Python代码,调用ffmpeg,即可对大量视频进行批量剪辑。
下载安装、帮助文档,进官网:https://ffmpeg.org
下面抛砖引玉,讲解一个乐思蜀的ffmpeg+Python剪辑方案,需要的朋友可以作为参考。
ffmpeg命令行:
ffmpeg -hide_banner -y -i 01.mp4 -vf "eq=contrast=1.06:brightness=0.03:saturation=1.06:brightness=0.01:contrast=1.01:gamma=1.01,crop=iw\*0.99:ih\*0.99:ow-iw:oh-ih,unsharp,trim=start_frame=6,hflip,hqdn3d,setpts=PTS/1.06,drawtext=text='@puppylove':x=w-mod(t\*30\\,w+tw):y=h-th-168:fontsize=36:fontcolor=white" -b:v 20000k -bufsize 20000k -maxrate 20000k -vcodec libx264 -acodec aac -shortest -force_key_frames "expr:gte(t,n_forced*0.99)" -r 60 -s 1080x1920 -preset slow -metadata title="My Title" output_$(date +"%Y%m%d_%H%M%S").mp4
参数详解:
-hide_banner 命令行执行时隐藏Banner,简化输出信息
-vf 视频滤镜
hqdn3d 画质增强
eq=contrast=1.06 对比度增加到 1.06 倍
brightness=0.03 亮度提升0.03
saturation=1.06 饱和度增加1.06
contrast=1.01 白色(Whites)增加0.01
brightness=0.1 黑色(Blacks)增加0.01
gamma=1.5 阴影(Shadows)
hflip 水平翻转画面
crop=iw0.99:ih0.99:ow-iw:oh-ih 生成的视频只要原视频右下角 99% 的内容,裁剪掉左上角的部分
unsharp 锐化(使用默认参数,可更详细的定义参数)
trim=start_frame=6 掐头,从原视频第6帧开始
drawtext=text='@test':x=168:y=1680:fontsize=32:fontcolor=white" 插入文字字幕
-r 60 输出帧率60fps
-y 直接覆盖输出同名文件
-b:v 20000k 输出视频码率
-bufsize 20000k 输出Buffer缓存,和-b:v搭配用,让码率更稳定
-maxrate 20000k 最大码率
-force_key_frames "expr:gte(t,n_forced*0.99)" 每间隔0.99秒,强制关键帧
-s 1080x1920 输出视频尺寸
-preset slow 编码速度和质量,Slow为最高
-vcodec libx264 视频使用Libx264编码
-acodec aac 音频使用AAC编码
(-an 输出不带音频【不需要声音时使用这个参数】)
-metadata title="My Title" 设置视频文件头信息:Title
-shortest 音视频适配(因为从第6帧开始掐头,加上视频加速了,音频会比视频长,使用这个参数把音频按视频长度截断)
-filter:v "setpts=1.03*PTS" 变速,1.03倍
output_$(date +"%Y%m%d_%H%M%S").mp4 输出文件名:output_年月日_时分钟秒.mp4
看了这些参数就会发现,加入了很多“去重”方法,这样剪辑出来的搬运视频,重复内容辩识度已经相当低了,经长期实测,过审率达90%以上。
ffmpeg+Python
命令行使用起来不方便,下一步我们可以把这些参数写到Python脚本中,在Python中调用ffmpeg处理视频,可以更方便的使用和随时修改参数。
我把Python脚本放到了Github上,方便后续完善代码和更新,通过下面网址访问:
https://github.com/lesishu/ffmpeg_video_cut/
有两个Python脚本:
1、single_video_cut.py 剪辑单视频,用法:
python3 single_video_cut.py 视频文件名
2、batch_video_cut.py 批量剪辑,读取input文件夹中的所有视频文件,剪辑后将输出文件放到output文件夹中。
分享结束,有不明白的地方在下方评论,欢迎讨论交流
领取专属 10元无门槛券
私享最新 技术干货