python爬虫怎样赚外快?利用Python自动更新抖音、视频号、快手等平台实现赚钱一条龙?没看错,此文教你玩明白moviepy,解放你的双手!
注意,由于某种原因你懂的,所以可能图片不显示,所以可以关注下公众号:秋小官
,我也直接把公众号文章链接附在下面。
公众号文章链接:利用Python自动更新抖音、视频号、快手等平台实现赚钱一条龙?没看错,此文教你玩明白moviepy,解放你的双手!
(😎)先说一句,包括这张封面图都不是我用photoshop或美图秀秀做的,是python生成的 最近使用python的moviepy批量产出了一些视频,可以顶替许多重复性的视频剪辑中的操作,大大提升的效率,这里把自己做视频剪辑时候的一些经验进行一下分享!
你心理一定有疑惑,python爬虫怎样赚外快?说说我本人。
首先放出个生成的视频,欣赏一下效果!
现在来看,当前运行的效果还比较满意,现在基本达到了让电脑自己在那运行,五六个小时剪出60个左右视频的效果,视频长度基本都是5分钟左右,而且每帧画面肯定是完全不同的(如何实现后面讲),搭配上配置的背景音乐、类似水印的文字及贯穿整个视频的利益点声明,几乎跟我自己手动剪出来效果是差不多的,具体如何来操作及一些避坑指南,我后面会讲到。
分享自己一些自己最近自动剪辑软件的心得吧,由于自己写了好多东西,但是每次录视频,都要准备好多东西,就比如说打光啦,比如说洗头洗脸造型呀,起码不能在视频里显得自己太邋遢,然后还要对自己讲的东西有理解,最好不要有卡壳的情况发生,即便有后面你自己手剪的时候,也最好把这些停顿不流畅的地方剪掉,不然极其影响用户体验,即便写逐字稿,对文字的把握,表达的状态,心理的状态也影响你阅读逐字稿时外显的效果,基于这种种原因,由于术业有专攻的缘故,所以每次都在上面花费好多时间,产出又很低,就冒出了要写python脚本来剪辑视频的想法。
开始教程部分之前,先来说下发布视频时的一些痛点(拿我自己的实际经验来举例):
-
每个视频做好之后,都要给它做封面,如果你不懂photoshop之类的软件,或者美图秀秀之类的也懂的不太多,那其实这里也蛮费时间的,随便做个图效果不一定好,具体怎么做出来效果好,可以去参考b站或者抖音、视频号上面 ,看哪些吸引你点进去,就可以做借鉴了
-
视频的发布,如果你用final cut pro剪的话,还要想办法用外部软件生成字幕再导入,或者自己逐帧加字幕,这样就太浪费时间了,如果用剪映的话,倒是蛮好解决的,就是它有语音自动识别生成文字,这里还是比较节省时间的,但是没法与final cut pro里字幕的处理逻辑通用,但是如果你完全习惯新股剪映pc版的话,也可以所有都在电脑上剪
-
视频的配乐,这个各花入各眼,怎么让音乐和情节或者主音相得益彰,这可能是专业编导需要思考的问题了,但是针对于如果是内容产出的话,以输出知识为主,那其实挺无所谓的,所以这个流程能不自己动手尽量不自己动手是最好的
具体手动实践的过程(不包含具体技术细节,只说大致思路):
- 素材准备。
因为我是做知识分享的,所以我不准备把这些生成的视频放在大号上,虽然大号只是自己口播,现在具体看还没有我生成这些视频的数据好(生成的视频剪辑进来都是热舞的美女,可能是原因之一),但是大号毕竟目的是来做ip,这些小号就如同我做seo给站点、公众号引流一样,不过是想扩大我触达我服务人群的范围,所以它们分开做。既然如此,你就要为这些视频的生成收集素材了,素材具体类型包括视频(有无声音均可,毕竟要重写音轨)
、背景音乐、文字稿、展示视频界面布局的一些设计(能表达出你在相应领域的专业,同时又能起到一定宣传的效果)。
对于文字稿多说几句:由于我比较常写,所以对于出稿是没什么难度的,但是我要做的事情,又不是简单只写写稿录录视频就完事这么简单,我还有自己的平台要维护,还要有软件功能要实现,所以这方面有时候也偷懒,比如会用剪映直接把一些视频的文案借鉴过来,自己再修改一二,你可以根据自己的情况灵活处置。
- 对于文字稿进行加工,批量生成语音
如果你有时间自己把这些东西都读了,存成mp3或者wav
格式就可以了,由于我只想批量快速生成内容,这种方法肯定不适于我了,我采用的是直接使用python的库把文字转化成语音,现在已经有很多成熟的接口支持做这项工作,百度有api,google有speech_recognize
,因为行业已经比较成熟的缘故,所以就看哪个读出来,更符合你口味更有感情了
- 对于视频布局进行设计,大家目的都很实际,贡献价值同时,遇到能赏识到你提供知识价值的人,如果有可能,把它转化成粉丝,甚至直接转化成自己客户那就更好了
因为我属于情感类的知识分享,所以,我基本都是用1080*1020
的尺寸,方便在手机上观看,又由于我做的视频,一次生成两份,一份在类似于b站、youtube这种pc端视频平台上发布,一份发布在国内的短视频平台抖音、快手、微信视频号等上面,所以我竖屏是依赖于横屏,即把收集到的视频素材处理成1080*664
,其它部分填充橙色背影,同时再覆盖类似于slogan
及watermark
的credits
及口播对应的字幕,这样的布局就满足我的需求了
- 实现
-
- 按照我上面说的要点,所以要有剪辑的效果,还要能吸引人们的目光,所以我选了女团的mv,随机截取指定长度视频,直到适应出音频文件长度
由于下载下来的视频,普通都是1080p以上甚至4k,所以我要对它们进行resize,同时要能有剪辑的效果,所以我就随机从每个视频里抽取一段来做为最后生成成品视频的视频素材,这里面就使用到了moviepy
中的VideoFileClip
方法及concatenate_videoclips
方法,同时利用了随机数的性质,在保留取了随机位置后仍然截取有效长度作为拼接视频组成部分,又不至于报错,最后生成的视频长度,肯定就对应音频的长度,因此就能具体确定你剪多少个视频,从每个视频里剪出多少秒。
-
- 生成的音频文件,和视频文件要合并
主要操作就是上面截取出来视频clip列表(list)
类型,再concatenate_videoclips
之后,要把生成出的视频进行set_audio
,同时把合成视频的长度和音频轨长度做下判断,因为音频是核心,主体内容,所以要让视频匹配这个长度,最后write_videofile
函数生成带音频的视频。
-
- 要准备背景意乐,我提前找了一些很火的背景音乐,准备和对应视频内容的音轨合并,这里提供2种思路。
思路1. 这里在切分音乐的时候,用到了ffmpeg的一些功能,并且moviepy底层的很多功能其实就对于ffmpeg
命令的一些封装,而moviepy
是python语言实现的,而ffmpeg
是C语言
实现的,一个是脚本型语言,一个是编译型语言,性能天然就有较大的差异,这也是很多时候,直接客户端命令行上执行ffmpeg
命令比moviepy
高效很多的原因
举几个例用ffmpeg
操作音频的例子:
`ffmpeg -stream_loop -1 -t 00:10:00 -i bg3.wav -af "volume=volume=0.2" bg7.wav` 这个命令不限制重复次数,直到生成长度为10min的音频,同时音量降低为正常音量的20%
`ffmpeg -stream_loop -1 -t 00:10:00 -i bg3.wav bg6.wav` 同上,只是没降低音量
`ffmpeg -stream_loop -1 -t 00:10:00 -i bg3.wav -af "afade=t=in:ss=0:d=10,afade=t=out:st=50:d=10,volume=volume=0.2" bg5.wav` 这是有个过渡效果,在指定的位置有淡入淡出的效果
思路2. 使用moviepy对ffmpeg
封装的工具包moviepy.bd.tools
,针对于clip,可以直接指定对于音频clip的音量调整或者速度变化
import moviepy.video.fx.all as vfx
#这是加快两倍的命令
clip.fx(vpx.speedx,2)
#这是给加`fadeIn`和`fadeOut`效果的
# 只截取5秒
clip1 = clip.subclip(0, 5)
# 旋转180度
clip2 = clip1.rotate(180).set_start(4)
# 在片段上交叉淡出的效果
clip2 = clip2.crossfadein(2.0)
# 合并片段
final = CompositeVideoClip([clip1, clip2])
-
- 添加各种文字挂件,字幕,这里给出两点提示。
1.这个主要就是用到TextClip
,但是要注意的是字幕位置的调整用到set_position
函数时注意避坑
我按文字中它计算的是top、left
的距离,所以set_position(a,b),b就应该是距离上方和下方的距离,但是发现上方无论怎么调都无效,上方必须用负值,才能让它靠近上边缘方向移动,下方必须是正值,才能远离上边缘,所以这个计算位置到底从哪算,还没太搞懂,我是一步一步试出来的。
2.多个TextClip可以一块放到video_concerate([a,b,c,d],video)中一次完成
editor.CompositeVideoClip([video1, add_text, add_text1])
我开始是每个生成一次视频,再打开,再写生成,这样效率很低。
-
- 把背景音乐合并进来 用到的就是AudioClipFile([video.audio,audio1],video)类似这种函数,同时要注意,应用了这个函数,你不能不赋值到新变量,否则变化是没有载体也就不会在生成视频里表现出来,最后再把这个合成后的音频作为视频的最终音频,用set_audio(xx)再设置一遍,然后再保存出来。
注意:这里要把背景音频的音轨和原视频上添加的音轨再次
提取出来,再赋值成新的变量,再把它和视频部分做合并,才不会丢某个音轨上的声音,如:
editor.CompositeVideoClip([video1, add_text, add_text1])
当然,这个脚本肯定是有可以优化的点的,我的计划是:
-
- 由于我有线上部署的java应用,也有线上部署的python应用,但是java这台机器性能相对比较好,所以,可能会用到jpython组件,在java里调用这个python脚本,再提供一个界面。更简单就是直接在python这台服务器上,把这个工具类拆成一个web服务,提供操作界面,用户上传各种素材直接生成视频。
-
- [] 配合着python的pyqt5,或者wxPython,或者Tkinter直接做成一个GUI界面的客户端应用,支持macos和windows操作系统,这里想象空间就比较大了。
-
- [] 性能可以进一步优化,现在是单进程,可以用
multiprocess
改成多进程,甚至如果有内网服务集群,甚至可以改成分布式的视频生成工具,我现在在搭自己的nas存储服务,目的就是素材操作更便捷,而且把脚本部署了上面跑就行,不然像我现在开十几个进程,我的macbook pro 2019 i9 16RAM 560X
基本CPU被占满,我基本干不了别的了。
- [] 性能可以进一步优化,现在是单进程,可以用
-
- [] 一些步骤可以进行合并,比如说加背景音乐和原音那里,直接就可以放在一步里来完成。
-
等等….
今天的文章分享就至此结束了,感谢您的阅读,顺便打波广告吧,有需要的话联系我吧(看下面的图,因为是随机剪辑,所以肯定也不会被判重,所以发到短视频平台效果是特别好的)。