一个完整直播app原理

直播原理:把主播录制的视频,推送到服务器,再由服务器分发给观众观看。

直播环节:推流端(采集、美颜处理、编码、推流)、服务端处理(转码、录制、截图、鉴黄)、播放器(拉流、解码、渲染)、互动系统(聊天室、礼物系统、赞)

直播产品的功能模块

内容复制分发,也就是cdn这块,服务器收集到主播视频后再通过在全国各地的节点将视频内容分发到终端。cdn是直播中最贵的,技术难度较高,一般都是采用第三方的;

聊天室:我们在看直播的时候,还可以在聊天室中聊天,这是应用了im即时通讯中的聊天室功能,聊天室和群聊的区别是,只有用户进入聊天室才能发言,看到好友,退出聊天室后就类似于退群,就收不到消息,看不到用户,看不到聊天记录了。因此,聊天室这块需要在即时通讯方面经验丰富的工程师;

打开网易新闻 查看更多图片

直播的技术难点

iOS 的优势在于 8.0 之后开放了硬编码的接口,介于只有 Apple 在做硬件,在硬件兼容性上要好很多,但是很少有人会告诉你在 iOS 不同版本上还是有很多的坑和差异,这点需要时间积累和经验。另外在软编上,码控方面会好一点。Android 的问题在于机型和版本的集合实在太多了,硬编变成了不可能完成的任务,软编也有很多选型。

其实最难的难点是提高首播时间、服务质量及Qos,如何在丢包率20%的情况下还能保障稳定、流畅的直播体验,需要考虑以下方案:

1. 为加快首播时间,收流服务器主动推送 GOP 至边缘节点,边缘节点缓存 GOP,播放端则可以快速加载,减少回源延迟

2. 2. gop丢帧,为解决延时,为什么会有延时,网络抖动、网络拥塞导致的数据发送不出去,丢完之后所有的时间戳都要修改,切记,要不客户端就会卡一个 gop的时间,是由于 dts 和 pts 的原因,或者播放器修正 dts 和 pts 也行(推流端丢gop更复杂,丢 p 帧之前的 p 帧会花屏)

3. 纯音频丢帧,要解决音视频不同步的问题,要让视频的 delta增量到你丢掉音频的delta之后,再发音频,要不就会音视频不同步

当下直播领域的发展已经成为不可逆的趋势 ,积极投身其中、顺应时代变化,搭建具有更多模式、更多特色功能的直播系统已时不可待。