当前位置: 首页 > article >正文

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

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

  如果能去掉视频的背景,只展示人物效果就会好很多。经过一些调研和实验,我终于探索出一种可以批量自动化实现透明背景视频的方法,最终实现的效果如下:
在这里插入图片描述
  数字人的视频我是使用的腾讯智影生成带绿幕的视频,要实现透明背景,有个很关键的信息需要知道,不是所有的视频格式(视频编码)都支持透明背景,首先我们最常用的mp4就是不支持(不管是h264还是h265)都不支持,目前支持透明背景的只有少部分视频编码,比如google的vp9(webm)格式,上图中我用就是webm+vp9编码的视频。实测这种视频兼容性也不行,比如在苹果的safari浏览器下,就无法透明背景。

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

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系列文章.


http://www.kler.cn/a/107624.html

相关文章:

  • 图片画廊 day2 (可复制源码)
  • C++ 数组与结构 编程练习
  • openSUSE 环境下通过 zypper 安装软件
  • 【日志】392.判断子序列
  • 平替 Spring 正当时!Solon v3.0.3 发布
  • Android OpenGL ES详解——纹理:纹理过滤GL_NEAREST和GL_LINEAR的区别
  • Linux下自动挂载U盘或者USB移动硬盘
  • eval()函数的用法,计算字符串中的值,模板字符串进行计算
  • CTF-Crypto学习记录-第四天 “ “ --- SHA1安全散列算法,实现原理。
  • mac安装并使用wireshark
  • Rust实现基于Tokio的限制内存占用的channel
  • 【C++】类与对象 第二篇(构造函数,析构函数,拷贝构造,赋值重载)
  • 前端小技巧: 实现 LRU 缓存算法功能
  • Kafka-Java四:Spring配置Kafka消费者提交Offset的策略
  • vue如何使用路由拦截器
  • 数据结构 C语言 2.1 线性表抽象数据类型 2.2 小议顺序表
  • Tp框架如何使用事务和锁,还有查询缓存
  • Linux UWB Stack实现——FiRa会话状态机
  • jmeter疑难杂症
  • 数据库数据恢复—Oracle数据库报错ORA-01110错误的数据恢复案例
  • Hive 常用DML操作
  • 前端移动web高级详细解析二
  • 安装虚拟机(VMware)保姆级教程及配置虚拟网络编辑器和安装WindowsServer以及宿主机访问虚拟机和配置服务器环境
  • 实体店做商城小程序如何
  • 模数转换器-ADC基础
  • 深入探究深度学习、神经网络与卷积神经网络以及它们在多个领域中的应用