直播现状
直播平台200+,用户规模3.25亿,市场规模已到90亿。
基础条件成熟
4G+Wifi 软硬件水平提升,游戏行业的培养,弹幕文化。
人性的驱动
窥探,炫耀,虚荣,色。
实时互动
文字,图片,视频。
赢利点
- 直播打赏抽成 观众送直播礼物
- 商品交易分红 真实的商品展示
- 付费直播提成 独家资源的直播
- 会员增值服务 广告收入
直播基本流程
推流端
采集,前处理,编码,推流
服务端
转码,录制,截图,鉴黄
播放端
拉流 解码 渲染
互动系统
聊天 礼物 点赞
直播流程之采集(一)
音频采集
PCM 原始数据
采样率,位宽,声道数,音频帧
音频帧大小计算
1 | 例如 采样率 8KHZ ,双通道,位宽 16bit ,20ms为一帧 |
图像采集
YUV 原始数据
分辨率,采样频率,采集格式,传输通道
采集源
摄像头 屏幕录制 文件推流
直播流程之采集(二)
Android 端采集
视频
Camera setPreviewCallback
音频
MediaRecorder 原始PCM
主要工作量机型适配
IOS 采集
AVFoundation.framework
PC采集
mjpeg-streamer 摄像头
直播流程前处理(一)
视频处理内容
美颜,滤镜,水印
音频处理内容
混音,降噪,特效
直播流程之前处理原理(二)
- 美白——识别皮肤,调整色值
- 磨皮——模糊处理 均值模糊,高斯模糊,中值滤波
- 水印——图像与水印图片的合并
- 滤镜——GPUImage
直播流程之前处理原理(三)
- 混音——音频信号的叠加,采样值溢出的处理
- 降噪——傅里叶变换
- 变声——音色,音调 SoundTouch
直播流程之编码和封装(一)
编码的必要性
压缩数据存储空间,减少传输时间
编码的原理
- 空间冗余:相邻像素之间的相关性
- 时间冗余:相邻图像之间的内容相似
- 编码冗余:像素值出现的概率不同
- 视觉冗余:视觉对细节的不敏感性
1 | 分辨率=1280*720 视频格式:yuv420sp fps=30帧/s |
常见的图像编码器
H264, H265, VP8, VP9
H264 编码知识
- NALU:网络提取层单元
- SPS:包括了一个图像序列的所有信息
- PPS:包括了一个图像所有片的信息
- I帧:帧内编码帧
- P帧:前向预测编码帧
- B帧:双向预测编码帧
- GOP:Group of Picture 两个I帧之间的图像组
常见的音频编码器
AAC,PCM,WAV,OGG
常见的封装格式
FLV,TS,AVI 等。
直播流程之推流与优化(一)
RTMP
实时消息传输协议,CDN支持良好,协议简单易实现。
基于TCP,传输成本高,Adobe 私有协议,不支持浏览器推送
WebRTC
w3c标准,基于UDP,CDN较差
UDP自定义协议
定制化空间大,协议私有化,缺点:开发成本高,CDN不友好。
直播流程之推流与优化(二)
优化思路
- 保证音频的传输
- 调整码率,FPS,分辨率
- 减少传输的数据,I帧丢失,P帧不传输。
效果 | 码率 | FPS |
---|---|---|
流畅度 | 负相关 | 正相关 |
清晰度 | 正相关 | 负相关 |
直播流程之服务端
转码
适应不同的网络带宽,不同的终端处理能力和不同的用户需求为直播平台提供很多增值服务
录制,截图
录制用于回放,截图用于封面
鉴黄
基于深度学习的图片识别技术,对直播流进行控制
直播流程之播放(一)
常见的拉流协议
RTMP,HTTP-FLV,HLS
RTMP,HTTP-FLV 延迟较小,1-3s,HLS 延迟较大,适用于回看。
直播流程之播放(二)
解码
编码的逆过程,从音视频的数据中提取原始数据
渲染
视频画面的显示,声音的播放
直播流程之交互系统
聊天
用户和主播互动的主要方式和群聊功能类似
礼物
增强了用户和主播之间的互动交流
平台主要的收入来源
直播开发辅助工具
推流端
OBS Studio
开源,支持桌面和文件推流,支持多画面,多音频混合推流,支持录制
播放端
- VLC,INA
- Softe AAC Converter——转化为aac音频
- H264BSAnalyzer——分析H264视频格式
- FLVParse——分析FLV文件
- yuvplayer——播放yuv文件
直播SDK 对比
功能点 | 阿里云 | 腾讯云 | 欢聚云 | 金山云 | UCloud | 七牛云 | 声网 |
---|---|---|---|---|---|---|---|
采集 | 麦克风,摄像头 | ||||||
前处理 | 美颜,连麦 | 美颜混合连麦 | 美颜美声水印连麦动态贴纸 | 美颜混音动态贴纸 | 美颜水印 | ||
编码 | H.264 AAC | ||||||
推流 | |||||||
转码 | |||||||
录制 | 支持 | 支持 | 第三方 | 支持 | 支持 | ||
截图 | 支持 | 支持 | 第三方 | 支持 | 支持 | ||
鉴黄 | 支持 | 第三方 | 支持 | 支持 | |||
播放 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |