串流直播,免费直播系统,会议直播服务,游戏直播首选

如何实现低延时直播——支持多终端播放

   2021-04-07 23:34 本文来源:   未知    作者: admin
为了解决用户VR直播与云游戏直播的需要,串流直播最近提出了以下两种低延时直播解决方案。

一、采用WebAssembly技术自己实现解码播放


    WebAssembly技术是最近两年冒出的技术,能够将C/C++等语言编译成javascript的二进制伪机器码,用WASM技术能够完美解决低延时直播。采用WASM技术实现低延时直播技术的实现关键技术如下:
 

1、采用Emscripten将FFMPEG的H264的C语言实现部分汇编成ffmpeg.wasm汇编代码

2、浏览器端JS调用ffmpeg.wasm进行H264视频解码

3、浏览器端JS用WebGL在CANVAS上面画图,实现视频图像的显示。

 
采用WASM技术,视频直播的整个环节从传输、解码到播放都能自己控制,基本能够实现极低的延时,如果不考虑网络带宽的情况下,端到端的延时在200毫秒左右。
采用Web汇编,要实现如下部分技术:
 

1、服务器端帧排序处理

     服务器端对视频帧进行缓存排序,尤其是对关键帧的缓存。

2、服务器端帧丢弃算法

 
   由于网络也许并不顺畅, 服务器端针对客户端传输时可能会发生缓存的帧数据无法发送出去,服务器端发现下一个关键帧到来了,就得主动丢弃当前的缓存队列里的帧。为了能够让已经发送出去的帧能够正常解码播放,缓存的当前的GOP队列里的B帧仍旧需要发送出去。
 

3、播放器端的丢帧

    播放器端如果解码速度不够(毕竟是软解码),就会缓存很多帧,如果收到下一个关键帧,播放器端应该将已经缓存当中的当前GOP的帧丢弃。
 
但是经过广泛的用户体验,发现WASM技术性能是瓶颈,在PC机上能够正常播放720P 30FPS的视频甚至于1080P 30FPS的视频,但在移动端,720P的视频几乎不能播放,960x540以下的25FPS的视频在目前的移动端手机上能够正常播放 ,但占的CPU资源仍旧过高。
采用 WASM技术的兼容性还是比较好的,不支持MSE的iOS平台也能够支持。
 
如果浏览器厂商将视频解码接口暴露出来,能够让开发者自行调用浏览器里的视频解码方法,则解码性能能够得到巨大的提高,实现低延时播放就更容易了。

 

二、采用Webrtc技术实现低延时

 
Webrtc技术现在已经成熟,由于Webrtc是基于WEB的实时通信技术,本身就要求达到低延时的目标,因此采用Webrtc技术就是当前的最佳选择,串流直播团队通过Webrtc技术实现了当前可用的低延时直播技术,主要技术如下:

1、专用网络端到端延时在200ms以内

2、互联网上端到端延时低于500ms

3、支持1080P,2K,4K视频实时解码,完美解决网络云游戏领域的要求

     由于WEBRTC采用浏览器自己的解码器来解码,可能会采用硬件解码,因此播放高码流 、高帧率,高分辨率的视频非常理想。
     备注:针对网络云游戏的低延时要求,编码端业的采用NVENC等硬件编码技术,如果仅采用CPU做软件编码,如果1080P的视频,即使是采用RTC来传输,延时也比较大。
 

4、支持4K的VR视频实时直播,延时在300ms之内

5、尤其适合在实时监控应用

 
串流直播团队以为,WEBRTC技术将成为低延时直播的主流技术,甚至会成为低延时直播的唯一技术。

当前该技术已经在云游戏、在线教学、VR直播与实时监控等多个领域得到了大规模应用检验,效果良好。
专业视频直播服务提供商
视频直播服务,会议直播服务