概述
虚拟背景依托于人像分割技术,通过将图片中的人像分割出来,对背景图片进行替换实现。并且可以对人像进行美颜等处理。本次demo是基于opencv处理,可替换成深度学习实现的。
下载源码和运行类库
metartc2_with_3rdparty.058.7z为源码压缩文件,metartc2.win_runtime.7z为应用程序依赖的dll文件
VR直播搭建
修改配置参数
修改配置文件include目录下Yang_Config.h文件
将#define Yang_HaveVr 0 修改为 #define Yang_HaveVr 1
配置文件yang_config.ini的[sys]下bgFileName为背景替换图片,目前只支持jpeg图片。
编译工程
ext目录为虚拟背景实现代码,需编译里面的工程libyangrtcext2,用qt打开即可编译
编译后的工程在bin/lib_win_debug目录下
美颜或者其他特效
在YangPushCapture.cpp里的startLoop函数里可以替换成其他特效
m_out_vr_pre_videoBuffer->getVideo(&videoFrame);//取出摄像头视频帧
yuv.I420torgb24(srcData, matSrcRgb, inWidth, inHeight);//将其转为rgb
mat->matImage(matSrcBgr, matDst);//抠图并替换背景,可替换为自己的特效,将其数据放入matDst数组里即可。
运行程序
编译好yangpushstream2后点击debug打开
选中VR复选框后,点击推流即可。
注意事项
基于opencv实现抠图,支持绿幕和蓝幕,有时需要灯光和参数调整。
抠图代码
YangMatImageCv.cpp里 yang_cvCvtColor(m_frame, m_hsv, 40); yang_cvInRangeS(m_hsv, cvScalar(35, 43, 46), cvScalar(77, 255, 255),m_mask);
参数 cvScalar(35, 43, 46), cvScalar(77, 255, 255) 是在这个颜色区间过滤,光线亮度不同会影响抠图的效果,需调整这个hsv颜色区间的数值。
webrtc服务器
推荐Srs4.0,下载编译参考http://github.com/ossrs/srs#usage
objs/srs -c conf/https.rtc.conf
可支持webrtc/rtmp/hls/srt/httpflv等直播。