如何使用ffmpeg制作透明背景的视频

最近我们尝试在网页上叠加数字人讲解的功能,发现如果直接在网页上放一个矩形的数字人视频,效果会很差,首先是会遮挡很多画面的内容,其次就是不管使用任何任务背景,画面都和后面的网页不是很协调,如图所示:

如果能去掉视频的背景,只展示人物效果就会好很多。经过一些调研和实验,我终于探索出一种可以批量自动化实现透明背景视频的方法,最终实现的效果如下:

数字人的视频我是使用的腾讯智影生成带绿幕的视频,要实现透明背景,有个很关键的信息需要知道,不是所有的视频格式(视频编码)都支持透明背景,首先我们最常用的mp4就是不支持(不管是h264还是h265)都不支持,目前支持透明背景的只有少部分视频编码,比如google的vp9(webm)格式,上图中我用就是webm+vp9编码的视频。实测这种视频兼容性也不行,比如在苹果的safari浏览器下,就无法透明背景。

另外一个问题是webm的格式也并不普及,比如腾讯智影导出只支持mp4,像剪映甚至final cut pro这样专业的剪辑软件都无法编辑导出透明背景的webm格式。 这里经过尝试,发现使用ffmpeg可以很轻松扣掉绿幕,然后导出透明背景的webm视频格式,完整命令如下:

bash 复制代码
ffmpeg -i green_video.mp4 -filter_complex "[0:v]colorkey=0x299530:0.1:0.1[ckout]" -map "[ckout]" -map 0:a -c:v libvpx-vp9 -b:v 2M -c:a libvorbis output.webm

这里需要说下其中最关键的参数 -filter_complex "[0:v]colorkey=0x299530:0.1:0.1[ckout]" -map "[ckout]" 其中0x299530 是我使用的绿幕的RGB值, 具体可以根据你绿幕的RGB值调整。 其他参数就比较简单了,具体可以参考我这个ffmpeg系列文章.

相关推荐
筏.k38 分钟前
WebRTC 集成 FFmpeg HEVC 硬件解码(hevc_cuvid)avcodec_open2错误码-558323010
ffmpeg·webrtc
CoookeCola1 小时前
开源图像与视频过曝检测工具:HSV色彩空间分析与时序平滑处理技术详解
人工智能·深度学习·算法·目标检测·计算机视觉·开源·音视频
撬动未来的支点2 小时前
【音视频】H.264关键帧识别
音视频·h.264
撬动未来的支点2 小时前
【音视频】RTP协议快速上手
音视频
ifeng09183 小时前
HarmonyOS分布式媒体播放器——跨设备音视频无缝流转
分布式·音视频·harmonyos
撬动未来的支点4 小时前
【音视频】B站的流媒体协议
音视频
撬动未来的支点5 小时前
【音视频】图像与音频的3A技术:ISP相机与音频3A算法的对比
音视频
山东布谷科技官方12 小时前
高并发视频直播系统源码:从直播架构设计开发到搭建部署上线
音视频·直播并发
B站_计算机毕业设计之家15 小时前
基于大数据的短视频数据分析系统 Spark哔哩哔哩视频数据分析可视化系统 Hadoop大数据技术 情感分析 舆情分析 爬虫 推荐系统 协同过滤推荐算法 ✅
大数据·hadoop·爬虫·spark·音视频·短视频·1024程序员节
音视频牛哥19 小时前
低空经济的实时神经系统:空地一体化音视频架构的技术演进
机器学习·计算机视觉·音视频·低空经济·人工智能+·evtol·ai感知网络