python ffmpeg剪辑视频_FFMPEG剪辑大法

该方法适用于像我这样习惯把所有素材预处理成小片段再导入AE/PR合成的情况,主要目的是减小工作相关文件的体积,不想为了个别片段而关联上整集视频文件。而且预处理过的片段也比原始长视频更方便索引时间,方便后期处理。(

作为一个AE党(不怎么会PR),在这之前PR都只被我用来预处理素材,因为它能比较方便地制作子剪辑然后批量导出。久而久之感觉这样有点大材小用,为了纯粹剪切片段而需要装一个PR和Media Encoder(批量导出非得装这个),但是AE用来处理平均20分钟以上的长视频那叫一个难受,而且要批量导出还是得装ME(C盘很小,固态很贵)。想到之前用ffmpeg把MKV转MP4,就想着这东西拿来剪点片段应该⑧成问题吧,而且这东西就那么几十MB大小,看着就舒服。

FFMPEG这东西下过来在windows下就是一个exe文件,你可以通过cmd或powershell来给它喂参数跑起来。比如之前的将mkv转成mp4就可以在cmd下运行:

ffmpeg-i input.mkv -vcodec copy -acodec aac -b:a 320k output.mp4

解释一下就是,输入了一个文件叫input.mkv,视频编码video code是copy (复制),音频编码audio code是aac压缩,音频码率audio bit rate不超过320k,然后生成的文件是output.mp4,这样一操作就把一个mkv文件给转成了mp4文件,视频流直接复制,不会有太大的计算量,由于mp4不支持flac所以音频得压缩成aac。音频的计算量相比压视频来说小得多,所以这种方法能把mkv比较方便地转成mp4文件。

然后就是在ffmpeg的官方文档里找有没有剪切的参数想都⑧用想肯定有:通过 -ss hh:mm:ss.ms来指定输入视频的剪辑起始点,通过-t hh:mm:ss.ms来指定从起始点开始剪多长的片段,于是你可以输入

ffmpeg-ss 1:23.456 -i input.mkv -t 0:10.000 -vcodec copy -acodec aac -b:a 320k output.mp4

这句话能够从input.mkv的1分23.456秒开始,截取10秒长度的片段输出到output.mp4中(特别要注意-ss参数要放在-i前面,也就是要先指定起始时间,再指定输入文件,否则ffmpeg的起始时间索引会受到输入文件所包含的关键帧的影响 没懂?这就对了)。然后在踩了许多坑之后,最后定出了这样一个参数能比较正确地工作:

ffmpeg-ss 1:23.456 -i input.mkv -t 0:10.000 -f mp4 -pix_fmt yuv420p -c:v libx264 -crf 14 -c:a aac -b:a 320koutput.mp4 -hide_banner -y

参数依次是:起始时间,输入文件名,片段长度,输出格式,像素排列方式,视频编码,码率(数字越小码率越高),音频压缩方式,音频码率限制,输出文件名,隐藏ffmpeg参数,输入“y“(输出文件名已存在时这个y能默认选择覆盖已有文件)。

这里选择把视频也用x264重新压一遍的原因是对于x265的视频copy出来的片段在播放器里正常,在ae里有些情况下会出现错帧的情况,一律拍成x264啥事没有。

现在已经能剪出一个想要的片段了,如果你只是偶尔想剪一段东西但又不想开PR,到这里就可以不用接着看了。如果想大量地剪的话,一条一条命令手打感觉难顶,批处理又写不来,只能整个python勉强过过日子。最后弄下来,记录剪辑时间点的文件内容就长这样,第一行是输入视频的名字(带格式后缀),后面就是起始时间,截止时间,片段名称依次排列下去,中间拿空格隔开就行。因为ffmpeg接收的是起始时间和片段长度,所以还得自己算一下时间差:

时间格式是小时:分钟:秒.毫秒,小时可以打也可以不打,分钟一定要打,毫秒可以不打,没怎么想着处理各种乱七八糟的情况,别瞎弄一般不会出事出事别找我。ep01.txt

我是拿potplayer看番的,一边看一边就在一旁记时间,potplayer里面可以用D和F快捷键来选择上一帧和下一帧,这样可以看到毫秒,把前面的时间记下来就行(不是特别在意精确时间的话可以直接看进度条上的时间)

Potplayer

看完一集后得到记录时间点的txt文件,起个好名字比如ep01.txt表示第一集(还可以带上番名),然后拿脚本跑一下(注意输入视频和脚本和ffmpeg.exe要在一个目录下,或者你把ffmpeg.exe所在目录添加到环境变量中,这样就只要复制一下脚本):

python ffmpeg.py -i ep01.txt

然后最后得到的片段名字就会是ep01-片段0.mp4,ep01-片段1.mp4,ep01-片段2.mp4。

这样剪东西我自己倒是觉得挺方便的,如果懂python的人还可以改一改加上指定输出目录、一个txt处理多个输入视频啥的,我现在用着挺舒服就也不想加了。

总结一下,想要做到用小体积软件进行简单的视频剪切操作,可以尝试一下这种方法,但毕竟是歪门邪道,而且带有强烈的个人习惯,⑧要太认真。

脚本放在:https://github.com/Leonana69/MKV2MP4

快开学了,坑还没填完

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值