像直播平台这样重视互动和实时性的应用场景,即时通讯可以从中起到很大的配合作用。所以对于直播平台搭建的技术人员来讲,音视频即时通讯技术是需要熟练掌握的。从最初的开发,到搭建,再到最后开发完成上架等并不像看起来一样简单。
视频过滤:同音视频采集一样,都属于传输过程的前处理。
音视频编码:对音视频采集的数据压缩转码,提高传输效率,减少操作时间。
推流:将数据传输至流媒体服务器集中处理服务器。
拉流:拉流的过程就是用户打开直播后呈现的画面,都是需要从流媒体服务器中拉流出来的。
音视频解码:将压缩上传的音视频数据进行解码。
音视频播放:解码后播放呈现在直播系统中。
终端的兼容性:
iOS的系统因为是封闭的,所以是相对简单的,全面兼容Android是比较复杂的事情。
用户并发测试:这方面是需要经验的,对于如果做过海量用户并发的大规模系统的技术来讲,这个就不是问题。
各个终端:MAC, WINDOWS, IOS, ANDROID。
配置采样参数
音频配置:码率(128)和采样率(44100HZ)
视频配置:视频分辨率(720P )、码率(2000KB/S)和帧率(30FPS)
视频编码
VideoToolBox FFmpeg H264
软编码: FFmpeg X264 用到CPU
硬编码 VideoToolBox AudioToolBox 商业项目 通用 硬编码 GPU (运算大于CPU) 硬件加速器
视频编码 VideoToolBox FFmpeg H264
音频编码 AudioToolBox FFmpeg AAC
在直播平台搭建过程中,消息系统是非常关键的,无论是直播间内的消息还是平台内的消息,都关系着用户的使用体验。
直播平台搭建客户端每隔一个极短的时间,例如1秒亦或者更短的时间,根据直播间的id来调用服务端的接口,轮询该直播间发生的消息,服务端这边我们使用redis的SortedSet的数据结构来存储消息,其中key是直播间的房间id,score是服务器接收到该消息事件生成的时间戳,value可以简单地直接存储该消息序列化后的字符串,这样可以按照时间顺序地去存储消息,并且配置过期消息的删除逻辑,整个消息的存储就可以简单地搭建起来。