随着互联网的飞速发展,网上现场直播观看直播已经变成90和00后的日常生活一部分。各式各样的社会活动都可以借助网上现场直播方式传遍全世界,如发布会、比赛、展览、商传、会议、看护、开学典礼、等等。
搭建一个完整的视频直播系统我们先要了解直播的技术架构和音频处理的流程
一、技术架构:
直播视频采集SDK——→直播CDN(直播流分发加速)——→直播视频播放器SDK
二、音视频处理流程:
采集→预处理→编码→传输→解码→渲染
1、采集
摄像机及拾音器收集视频及音频数据,此时得到的为原始数据,iOS系统因为硬件种类不多,选择硬件适配性较好,所以比较简单。安卓则不一样,市面上的硬件机型很多,难以做到一个库适配所有硬件。PC 端的采集也跟各种摄像头驱动有关,推荐使用目前市面上最好用的 PC 端开源免费软件OBS
2、预处理
预处理也就是前处理,美颜、模糊效果、水印等
3、编码
编码主要难点有两个:1.处理硬件兼容性。2.在高fps低bitrate和音质画 质之间找到平衡。IOS端硬件兼容性较好,可以直接采用硬编。而 Android 的硬编的支持则难 得多需要支持各种硬件机型,推荐使用软编。
4、传输
传输涉及到很多端:主播端→服务端→边缘节点→观看端
推流端和分发端理论上需要支持的并发用户数应该都是亿级的,不过毕竟产 生内容的推流端在少数,和消费内容端播放端不是一个量级,但是他们对推 流稳定性和速度的要求比播放端高很多,这涉及到所有播放端能否看到直播 和直播端质量如何。
自己做传输基本不现实,推荐交给CDN服务商。CDN只提供了带宽和服务器 的传输,发送和接收端的网络连接抖动缓冲还是要自己写的。不想要卡顿, 必然要加大缓冲,加大缓冲会导致延迟高,延迟高影响互动性,要做权衡。
5、解码和渲染
解码和渲染,也即音视频的播放,目前 iOS 端的播放兼容性较好,在延迟 可接受的情况下使用 HLS 协议是最好的选择。Android 的硬件解码和编码 一样也存在兼容性问题。
三、协议相关
视频直播服务支持输出 RTMP、FLV、HLS 三种协议
RTMP
RTMP是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据 传输开发的开放协议。比较全能,既可以用来推送,又可以用来直播。核心 理念是将大块的视频帧和音频帧“剁碎”,然后以小数据包的形式在互联网 上进行传输,且支持加密。但拆包组包的过程比较复杂,所以在海量并发时 容易出现一些不可预期的稳定性问题。
HTTP-FLV
HTTP-FLV 协议由 Adobe 公司主推,格式极其简单,只是在大块的视频帧和 音视频头部加入一些标记头信息,由于这种极致的简洁,在延迟表现和大规 模并发方面都很成熟。用作手机端 APP 直播协议却异常合适。
HLS 协议
苹果推出的解决方案,将视频分成 5-10 秒的视频小分片,然后用 m3u8 索 引表进行管理。由于客户端下载到的视频都是 5-10 秒的完整数据,故视频 的流畅性很好,但也同样引入了很大的延迟(HLS 的一般延迟在 10-30s 左 右)
此外还有音频降噪、音频编码器、数据库、缓存、分布式文件存储、消息队列、运维系统等
上一篇:免费视频APP推广
下一篇:教你如何用电影工作号日进斗金