最近公司有项目涉及到直播,于是做了个简单的了解和测试,在此写点心得体会,以作备忘。

1. 直播的主要特点和分类

一般常见的直播有如下类别:

1)培训式直播

2)秀场式直播

3)实时会议式直播

其主要特点如下:

  视频源 是否需要美颜 是否需要动态合成道具 实时性要求 是否需要服务端合成流 是否需要多窗口播放
培训式直播 本地设备屏幕或者PPT窗口等 一般不需要美颜;但需要考虑动态合成背景 需要在画面上实时显示教辅工具的效果 一般延时在2-3秒内都可以接受 通常不需要,服务端仅需要处理录制即可 不需要
秀场式直播 本地摄像头实时画面 必须实时提供必要的美颜功能,比如美白、廋脸、磨皮等,高级的可以提供动态化妆、变声等 可以考虑提供一些辅助效果,比如常见的兔耳朵、猫胡须等 大部分观众延迟在2-3秒内,极少连麦观众延迟应在毫秒级 通常不需要,服务端仅需要处理录制即可 多人互动时需要
实时会议式直播 本地摄像头实时画面为主,但本地设备屏幕也需要提供 一般不需要美颜;可考虑提供动态合成背景 可以考虑提供一些简单的辅助工具,比如绘制箭头、打圈、画重点等 通常要求在毫秒级 通常需要 需要

 

 

 

 

 

 

 

 

 

2. 直播影响用户体验的关键点

1)音视频源提供和终端播放的流畅度

2)最终延时时长

3)美颜效果的自然程度

4)对于带宽和设备资源的消耗

5)其他配套业务效果

3. 技术关键点

1)整体音视频流的传输和交互方案

常见的传输方案有单向且有延时的RTSP/RTMP/FLV等,也有双向且时延较低的WebRTC,或者自定义其他私有传输方案

2)本地屏幕视频源抓取

方案很多,比如直接屏幕录制,比如GDI层面截图,比如显存层面信息抓取,比如操作系统图像子系统(Windows下的DX等)信息抓取,比如第三方工具直接使用,如ffmepg等。

不同方案的编码复杂度、性能、兼容性等均存在差异,应灵活判断作出选择。

3)主播端推流方案

常用的有RTSP/RTMP推流,或者WebRTC推流

4)美颜方案

美颜有开源算法,也有各大厂商提供现成的SDK,SDK价格主流在10-30W左右,顶级价格超百万。

5)服务端流转发方案

可以自行编写媒体转发服务,也可以直接使用各大厂商提供的集成服务,或者使用开源的方案比如nginx+RTMP等

6)服务端合流方案

可以自行实现,也可以直接使用一些开源实现或者大厂实现;不过基本上都离不开ffmepg

7)道具方案

可以在主播端推流时,根据道具信息,在视频层进行合成;也可以在服务端进行合成;

或者道具作为外部效果,将其UI在观众端与视频进行图层叠加展示

8)观众端播放方案

有单路播放、多路播放之分;有服务端合流和播放端合流之分;有基于SDL的,也有基于UI展示控件的;有CPU解码的,也有GPU解码的

9)整体控制

需要额外考虑:开始直播观看时的超短时长启动、观看端时移、静音、锁屏保护、录制和监管、网络抖动优化、自动帧率/码率优化、旁路讲解合成等

4. 实现

若拟采用大厂的现场实现方案,可选大致有:声网、腾讯、263等

具体实现demo,留档于gitee。

 

posted on 2020-07-31 11:53  oilamp  阅读(280)  评论(0编辑  收藏  举报