WebRTC音视频实时互动技术:原理、实战与源码分析
上QQ阅读APP看书,第一时间看更新

2.1.2 跨平台

实现音视频直播客户端除了要实现上面介绍的7个模块外,还要考虑跨平台的问题,只有在各个平台上都能实现音视频的互联互通,才能称得上是一个合格的音视频直播客户端。所以它至少应该支持Windows、Mac、Android以及iOS四个终端,当然如果还能够支持Linux端和浏览器就更好了。

要知道的是,如果不借助WebRTC,想在浏览器上实现音视频实时互通,难度是非常大的,这是自研系统的一大缺陷。除此之外,其他几个终端的实现倒是相对较容易的事。

增加跨平台后,音视频直播客户端的架构较之前复杂多了,如图2.3所示。从这张图中可以看到,要实现跨平台,难度最大也是最首要的是访问硬件设备的模块,如音频采集模块、音频播放模块、视频采集模块以及视频播放模块等,它们在架构中的变化是最大的。

图2.3 跨平台音视频直播客户端架构

以音频采集为例,在不同的平台上,采集音频数据时使用的系统API是不一样的。PC端使用的是CoreAudio;Mac端使用的系统API也称为CoreAudio,不过具体的函数名是不同的;Android端使用的是AudioRecord;iOS端使用的是AudioUnit;Linux端使用的是PulseAudio。

总之,每个终端都有各自采集音视频数据的API。由于不同的系统其API设计的架构不同,所以在使用这些API时,调用的方式和使用的逻辑也千差万别。因此,在开发这部分模块时,其工作量是巨大的。