引言
开始讲之前先解决大家看到这个标题时心里的3个疑惑:
视频剪辑不是用Adobe的软件就可以做了吗?
为什么要用Serverless?
如何写代码做视频剪辑?
一、哪些视频剪辑场景
是Adobe等软件无法完成的
大家平常接触到的视频剪辑通常都是使用Premiere、AE等这类专业工具来完成视频剪辑。他们能完成一些复杂的效果,比如做宣传视频,广告视频等。
但有些企业在某些业务场景下是期望能批量且自动化的完成视频剪辑。
比如以下几种场景:
假设学校期望能在学生上完 课之后马上呈现所有学生学习过程中的精彩视频,配上学校的logo和宣传语等,让学生一键分享自己的成果。假设有1万个学生,需要为每个学生制作独一无二的视频,所以需要批量且自动化的完成1万个不同的视频剪辑。
某次营销活动中,需要为不同的用户生成不同的头像视频来吸引用户参与。每个用户的头像都是独一无二的,生成的视频也是独一无二的,用户可能成千上万,因此自动化完成是必须的条件。
红运营公司期望能给所有主播生成统一的营业视频。可能有100个主播,专门找一个人剪辑100个视频好像勉强能接受,但如果每周都要剪一次不同的视频呢?所以自动化,批量和可定制化的剪辑就成了主要需求。
以上的场景中有三个特点:
批量
自动化
可定制
对于符合以上特点的场景,是传统的视频剪辑工具或者模版化的视频处理软件无法轻松完成的。
二、为什么推荐用Serverless
因为视频剪辑这样的业务有几个特点:
使用时段集中。
计算量大。
单独购买高规格的服务器利用率很低,买便宜的服务器计算能力又跟不上。
因此Serverless按量计费的特点,以及高性能的计算能力,完美匹配了这样的需求场景。
既能达到100%的利用率,又能按量使用它的高性能计算能力。同时,腾讯云Serverless云函数拥有多变的可编程环境,可以使用任意熟悉的编程语言,灵活性很高。
三、如何通过写代码做视频剪辑
我们通过不同的FFmpeg命令就可以编程完成不同的视频剪辑功能,组合编排起来,就可以应对各种批量自动化的场景了。
四、视频剪辑批量化、自动化与定制化实践
常见的视频剪辑场景主要包含以下几种:
视频转码
视频裁剪
视频加文字
视频加图片
视频拼接
视频加音频
视频转场
视频特效
视频加速慢速播放
接下来给大家展示一些具体的FFmpeg命令例子,如果你在本地安装了FFmpeg,也可以在本地执行这些命令。关于怎么安装FFmpeg,可以去看官 的教程(http://ffmpeg.org/)。
FFmpeg能做的事情非常多,这里就不一一讲解了。更多的玩法可以在FFmpeg官 上探索。
五、运行FFmpeg命令
因为Python运行这些命令比较便捷,所以我们可以使用Python来运行所有的FFmpeg命令。
同时,Python在腾讯云Serverless云函数上运行性能也比较好,部署也方便。
通过Python来使用FFmpeg的视频剪辑代码在文章最后有开源链接,并且,在官 上也有模版可以直接使用,几乎覆盖了常见的音视频剪辑等操作。
这里就展示一个简单的调用代码示例:
六、在Serverless部署
上面提到的常见的视频剪辑场景我已经实现并开源了,下载代码直接部署到Serverless就可以使用了,下载地址:
https://github.com/woodyyan/ffmpeg-composition
https://github.com/woodyyan/ffmpeg-splice
这里分为了两个函数,一个负责处理单个视频,一个负责把多个视频拼接成一个视频并配上背景音乐。
目前支持以下功能:
在视频中添加文字
视频分辨率转换
在视频中添加图片
视频拼接
添加背景音乐
源码里展示的只是常见的一些视频剪辑场景,大家可以根据自己的业务需要,编写自己的视频剪辑逻辑。
(一)方式一:Github Action自动部署
Fork仓库。
在仓库的Settings-Secrets-Actions中添加TENCENT_SECRET_ID和TENCENT_SECRET_KEY两个密钥。ID和KEY可以在腾讯云的访问控制里面获取。
添加之后,在Action中就可以发起部署了。每次修改代码推送后,也会自动触发Action部署。
如果需要有一些自定义的配置,请修改serverless.yml。
云函数最终会自动部署到TENCENT_SECRET_ID所在的账 下。
(二)方式二:云函数控制台手动部署
下载代码。
在根目录把所有文件和文件夹一起打包成一个ZIP文件。
去云函数控制台(https://console.cloud.tencent.com/scf/list),新建一个函数。
选择从头开始:
选择python语言。
上传ZIP文件。
函数内存建议选择较大的内存。
开启异步执行。
执行超时时间根据视频大小建议设置长一点,比如30秒以上。
配置触发器,选择API 关触发器,关闭集成响应。
完成部署后,就可以通过API 关的URL开始调用了。
七、真实案例回顾
一个做 课的学校,需要每次在学生上完 课之后把上 课的录像制作成一段30秒的视频,作为学生的学习成果。此案例有几个关键的信息点:
通常一堂课有200个学生,需要同时制作200个视频。
需要把1小时的上课视频剪辑成30秒。
由于每个学生的上课屏幕有所不同,因此录制的视频都是不同的。
最终的成果视频还需要加上学生的名字和头像。
学生结束上课的时间很集中,因此制作视频时会有短时高并发。
每次上完课的时候才会需要制作视频,时段比较固定且集中。
综合上述特点,用腾讯云Serverless云函数来做这样的视频剪辑带来了多个好处:
解决了200个并发的问题,不需要自己搭建过多的服务器。
解决了只在发生时段使用的问题,其他时段都没有成本产生。
解决了需要较强计算能力快速制作视频的问题。
下面是这个案例的参考架构图:
总结
通过编排、组合、复用上面列举的各种音视频剪辑的场景,就能制作出各种各样想要的效果。
然后把视频剪辑中用来控制各种效果的参数,变成调用服务时传入的参数,就能实现各种效果的定制化了。
最后再总结一下通过这种写代码的方式完成视频剪辑的使用场景:
解决通过修改个别参数来批量制作视频的场景。
解决通过用户触发来自动化制作视频的场景。
解决不同场景需要不同定制化的制作视频的场景。
同时,利用腾讯云Serverless云函数来完成视频剪辑,同样也解决了以下几个问题:
因为通常视频剪辑不是全天运行,利用腾讯云Serverless云函数按量付费的特性能优化成本。
因为视频剪辑通常是重计算场景,利用腾讯云Serverless云函数可选的高规格配置来应对这种重计算场景。
在批量制作视频的场景中通常会存在高并发,利用腾讯云Serverless云函数自动弹性伸缩的特性能轻松应对高并发。
注:如果您对用Serverless实现视频剪辑批量化、自动化与定制化方案感兴趣,欢迎添加小助手(微信 :skychoud)了解~
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!