返回

**走出直播的舒适圈—webrtc实现跨平台视频直播**

前端

这是一个webRTC视频直播的实践,出自我所在的智能家居公司。我们公司的安防camera业务组负责核心音视频直播、视频回放等业务功能。原先的播放器基于hybrid分层,由原生提供,js层负责调用。但它存在不少问题,例如性能消耗大、接口繁多、难以维护等。除此之外,它无法移植到PC端,且tutk+p2p的连接还不稳定。因此,架构牵头开始了基于webrtc的视频直播的讨论。通过webrtc来实现跨平台的视频直播,这个决定堪称一场挑战。最终我们攻坚克难,克服了一个又一个技术难题,取得成功,走出直播的舒适圈,迈入开放的生态圈。

技术难点剖析

1. 信令封装

第一步难关便是信令封装。原有的信令协议是基于http协议的,与webrtc的信令协议完全不同。webrtc使用的是基于socket.io的信令协议,两者在封装上存在巨大差异。为了解决这一问题,我们的策略是利用FFmpeg将信令封装为webrtc能够识别的格式,实现信令的正常传输。

2. 跨端移植

由于webrtc的视频直播功能只支持移动端,而我们的需求是跨平台的,因此必须解决跨端移植问题。我们采用的是react-native技术,将原有播放器的功能和ui全部重写,从而在移动端、PC端都能正常使用。

3. 性能优化

原生播放器本身的性能消耗就比较大,加上webrtc本身也要消耗一定的性能,因此如何优化性能就成了重中之重。我们从以下几个方面入手:

  • 优化视频编码,使用更适合移动端网络环境的视频编码格式,降低视频码率,从而减少对网络带宽的占用;
  • 优化音频编码,使用更适合移动端网络环境的音频编码格式,降低音频码率,从而减少对网络带宽的占用;
  • 优化网络传输,使用更适合移动端网络环境的网络传输协议,例如QUIC协议,从而提高网络传输效率;
  • 优化播放器本身的性能,通过减少不必要的代码,优化算法,从而降低播放器的资源占用。

通过以上优化手段,我们最终将播放器的性能优化到了一个比较理想的状态。

4. 兼容性测试

由于webrtc的兼容性问题一直存在,因此我们必须进行严格的兼容性测试,以确保播放器能够在主流浏览器和移动端设备上正常工作。我们通过编写兼容性测试脚本,对播放器进行全面的测试,发现并修复了大量的兼容性问题,最终保证了播放器能够在主流浏览器和移动端设备上稳定运行。

webrtc实现在实践中发现的问题

1. 浏览器兼容性问题

webrtc在不同浏览器上的兼容性存在差异,在一些浏览器上可能无法正常工作。例如,在safari浏览器上,webrtc的视频直播功能就存在一些问题。

2. 网络环境影响

webrtc的视频直播对网络环境非常敏感,在网络环境较差的情况下,可能会出现卡顿、掉线等问题。

3. 安全性问题

webrtc的视频直播存在一些安全隐患,例如,黑客可能会利用webrtc的漏洞发起攻击,窃取用户的隐私信息。

结语

尽管webrtc在实践中还存在一些问题,但它的优势不容忽视。webrtc的视频直播功能非常强大,可以实现跨平台的视频直播,并且它的成本相对较低。随着webrtc的不断发展,这些问题有望得到解决。