音视频即时通讯技术的基础

像直播平台这样重视互动和实时性的应用场景 , 即时通讯可以从中起到很大的配合作用 。所以对于直播平台搭建的技术人员来讲 , 音视频即时通讯技术是需要熟练掌握的 。从最初的开发 , 到搭建 , 再到最后开发完成上架等并不像看起来一样简单 。
【音视频即时通讯技术的基础】视频过滤:同音视频采集一样 , 都属于传输过程的前处理 。
音视频编码:对音视频采集的数据压缩转码 , 提高传输效率 , 减少操作时间 。
推流:将数据传输至流媒体服务器集中处理服务器 。
拉流:拉流的过程就是用户打开直播后呈现的画面 , 都是需要从流媒体服务器中拉流出来的 。
音视频解码:将压缩上传的音视频数据进行解码 。
音视频播放:解码后播放呈现在直播系统中 。
终端的兼容性:
iOS的系统因为是封闭的 , 所以是相对简单的 , 全面兼容Android是比较复杂的事情 。
用户并发测试:这方面是需要经验的 , 对于如果做过海量用户并发的大规模系统的技术来讲 , 这个就不是问题 。
音视频即时通讯技术的基础
文章图片

文章图片
各个终端:MAC,WINDOWS,IOS,ANDROID 。
配置采样参数
音频配置:码率(128)和采样率(44100HZ)
视频配置:视频分辨率(720P)、码率(2000KB/S)和帧率(30FPS)
视频编码
VideoToolBoxFFmpegH264
软编码:FFmpegX264用到CPU
硬编码VideoToolBoxAudioToolBox商业项目通用硬编码GPU(运算大于CPU)硬件加速器
视频编码VideoToolBoxFFmpegH264
音频编码AudioToolBoxFFmpegAAC
在直播平台搭建过程中 , 消息系统是非常关键的 , 无论是直播间内的消息还是平台内的消息 , 都关系着用户的使用体验 。
直播平台搭建客户端每隔一个极短的时间 , 例如1秒亦或者更短的时间 , 根据直播间的id来调用服务端的接口 , 轮询该直播间发生的消息 , 服务端这边我们使用redis的SortedSet的数据结构来存储消息 , 其中key是直播间的房间id , score是服务器接收到该消息事件生成的时间戳 , value可以简单地直接存储该消息序列化后的字符串 , 这样可以按照时间顺序地去存储消息 , 并且配置过期消息的删除逻辑 , 整个消息的存储就可以简单地搭建起来 。