直播技术总结
2018-03-06 10:44
155 查看
直播现状
直播平台200+,用户规模3.25亿,市场规模已到90亿。基础条件成熟
4G+Wifi 软硬件水平提升,游戏行业的培养,弹幕文化。人性的驱动
窥探,炫耀,虚荣,色。实时互动
文字,图片,视频。赢利点
直播打赏抽成 观众送直播礼物商品交易分红 真实的商品展示
付费直播提成 独家资源的直播
会员增值服务 广告收入
直播基本流程
推流端
采集,前处理,编码,推流服务端
转码,录制,截图,鉴黄播放端
拉流 解码 渲染互动系统
聊天 礼物 点赞直播流程之采集(一)
音频采集
PCM 原始数据采样率,位宽,声道数,音频帧
音频帧大小计算
例如 采样率 8KHZ ,双通道,位宽 16bit ,20ms为一帧 一个音频帧大小为: 8000 * 2 * 16 * 0.02=5120bit=640Byte
图像采集
YUV 原始数据分辨率,采样频率,采集格式,传输通道
采集源
摄像头 屏幕录制 文件推流直播流程之采集(二)
Android 端采集
视频
Camera setPreviewCallback音频
MediaRecorder 原始PCM主要工作量机型适配
IOS 采集
AVFoundation.frameworkPC采集
mjpeg-streamer 摄像头直播流程前处理(一)
视频处理内容
美颜,滤镜,水印音频处理内容
混音,降噪,特效直播流程之前处理原理(二)
美白——识别皮肤,调整色值磨皮——模糊处理 均值模糊,高斯模糊,中值滤波
水印——图像与水印图片的合并
滤镜——GPUImage
直播流程之前处理原理(三)
混音——音频信号的叠加,采样值溢出的处理降噪——傅里叶变换
变声——音色,音调 SoundTouch
直播流程之编码和封装(一)
编码的必要性
压缩数据存储空间,减少传输时间编码的原理
空间冗余:相邻像素之间的相关性时间冗余:相邻图像之间的内容相似
编码冗余:像素值出现的概率不同
视觉冗余:视觉对细节的不敏感性
分辨率=1280*720 视频格式:yuv420sp fps=30帧/s 一秒的数据量 1280 * 720 * 1.5bit*30=5M
常见的图像编码器
H264, H265, VP8, VP9H264 编码知识
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,分辨率
效果 | 码率 | FPS |
---|---|---|
流畅度 | 负相关 | 正相关 |
清晰度 | 正相关 | 负相关 |
I帧丢失,P帧不传输。
直播流程之服务端
转码
适应不同的网络带宽,不同的终端处理能力和不同的用户需求为直播平台提供很多增值服务录制,截图
录制用于回放,截图用于封面鉴黄
基于深度学习的图片识别技术,对直播流进行控制直播流程之播放(一)
常见的拉流协议
RTMP,HTTP-FLV,HLSRTMP,HTTP-FLV 延迟较小,1-3s,HLS 延迟较大,适用于回看。
直播流程之播放(二)
解码
编码的逆过程,从音视频的数据中提取原始数据渲染
视频画面的显示,声音的播放直播流程之交互系统
聊天
用户和主播互动的主要方式和群聊功能类似礼物
增强了用户和主播之间的互动交流平台主要的收入来源
直播开发辅助工具
推流端
OBS Studio
开源,支持桌面和文件推流,支持多画面,多音频混合推流,支持录制播放端
VLC,INASofte AAC Converter——转化为aac音频
H264BSAnalyzer——分析H264视频格式
FLVParse——分析FLV文件
yuvplayer——播放yuv文件
直播SDK 对比
功能点 | 阿里云 | 腾讯云 | 欢聚云 | 金山云 | UCloud | 七牛云 | 声网 |
---|---|---|---|---|---|---|---|
采集 | 麦克风,摄像头 | ||||||
前处理 | 美颜,连麦 | 美颜混合连麦 | 美颜美声水印连麦动态贴纸 | 美颜混音动态贴纸 | 美颜水印 | ||
编码 | H.264 AAC | ||||||
推流 | |||||||
转码 | |||||||
录制 | 支持 | 支持 | 第三方 | 支持 | 支持 | ||
截图 | 支持 | 支持 | 第三方 | 支持 | 支持 | ||
鉴黄 | 支持 | 第三方 | 支持 | 支持 | |||
播放 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
相关文章推荐
- 直播技术总结(五)如何快速起播直播流
- 视频直播技术(三):低延时直播经验总结
- [置顶] 直播技术总结(二)ijkplayer的编译到Android平台并测试解码库
- 直播技术总结(四)音视频数据压缩及编解码基础
- Android IOS WebRTC 音视频开发总结(七六)-- 探讨直播低延迟低流量的粉丝连麦技术
- 直播推流技术及android jni回调java方法总结
- 移动直播技术优化-秒开及相关方案总结(干货)
- 从一个直播APP开发的流媒体系统的技术架构及应用进行总结
- 视频直播基础技术总结1
- Android IOS WebRTC 音视频开发总结-- 探讨直播低延迟低流量的粉丝连麦技术
- 关于音视频直播技术的总结
- [置顶] 直播技术总结(四)音视频数据压缩及编解码基础
- 直播技术总结(三)ijkplayer的一些问题优化记录
- [置顶] 直播技术总结(三)ijkplayer的一些问题优化记录
- 直播技术总结(一)流媒体服务器搭建,进行推流
- 直播技术总结(三)ijkplayer的一些问题优化记录
- [置顶] 直播技术总结(一)流媒体服务器搭建,进行推流
- 视频直播技术总结分享
- C#操作office技术总结
- 视频直播技术(二):延迟优化