webrtc Native C++视频旋转/裁减/绿屏问题

场景:手机采集1280x720视频,推流到服务器,pc端拉流后显示

一、绿屏和裁减现象
1.1绿屏现象
1.2裁减问题
二、出现绿屏和裁减现象的原因
三、如何防止这两个现象
3.1webrtc中相关宏
3.2在接收函数中处理

一、绿屏和裁减现象
1.1绿屏现象
首先看下绿屏幕,在右边有一条竖的绿条:
请添加图片描述1.2裁减问题
手机端采集的包含整个显示器,pc拉流后播放的只含部分,webrtc自动对收到的视频进行了裁减。
请添加图片描述
二、出现绿屏和裁减现象的原因
webrtc只支持16:9和4:3规格的视频,当pc端的webrtc把流拉来解码后做了裁减。把手机横屏采集,竖向代表高,横向代表宽,采集1280x720视频。此时pc端的webrtc会把手机的高也就是720当作宽,因为720不是64的倍数,因此进行字节补齐到768,768-720=48也就是上图绿条的宽度。然后webrtc按照16:9再裁减出来高:(768/16)*9=432。因此一个1280x720的视频源在解码后被裁减成了768x432。产生了绿条和不完整现象。
三、如何防止这两个现象
如何防止这个现象呢,我们需要做一个旋转,把1280当做宽而不是720当作宽。
如何旋转

猜你喜欢

转载自blog.csdn.net/weixin_43466192/article/details/127883203