《2017年如何解决视频直播APP开发与性能痛点.pdf》由会员分享,可在线阅读,更多相关《2017年如何解决视频直播APP开发与性能痛点.pdf(61页珍藏版)》请在三个皮匠报告上搜索。
1、视频直播APP开发与性能痛点2017.11 金昊开直播看直播玩直播2016.012016.052016.102017.042015.10千帆直播直播基本交互直播间进入速度:300ms整体技术指标聊天接入速度:500ms白屏和DNS被劫持率:1%DNS解析时间:100ms一次连麦成功率:99%APP 整体崩溃率:5APP 卡顿率:1%点播视频打开速度:300ms头像、封面:20k内存泄露率:10%/小时整体CPU峰值:60%APP 温度控制平均温度:60直播流首帧延迟均值:500ms直播技术指标推流稳定性:95%直播流丢包率/丢帧率:2%硬编硬解覆盖率:99%直播和连麦延迟:1.5s回音消除、去
2、噪直播流卡顿率:1%黑屏、绿屏、画面卡死:1美颜、道具、贴纸 CPU占用:20%来电、通知、网络切换自动恢复推流CPU占用均值:50%观众端CPU占用均值:30%开播基本流程采集处理编码封包推流采集AndroidAndroid.CameraAudioRecord采集麦克风YUV/RGB、PCMiOSCamera 封装AVCapture(AVFoundation)YUV/RGB、PCM视频处理GPUImageFilterGPUImageFilterGPUImageFilter美颜滤镜贴纸3D道具瘦脸大眼GPUImageFilterAR/VRYUV/RGBGPUImageView(主播预览)编码美
3、颜:无美颜,不直播!美白磨皮补光可爱贴纸瘦脸占用 CPU 资源影响编码效率主播回显延迟增大编码封装FLVH.264AACH.264 编码IPIBPIGOPiOS H.264 编码FFMpeg/X264/Xvid软编YUVH.264(CMSampleBuffers)封装VideoToolBox(VTCompression)硬编iOS PCM 编码AAC降噪麦克风收音麦克风PCMAudio采集AudioToolBox硬编FFMpeg(libfdk-aac)软编Android H.264 音视频编码MediaCodecY兼容硬编?FFMpegNHEVC(H.265)RTMP 转 HTTP-FLV,H
4、.265 反而会快一些,而且压缩比提高!如果不涉及编码转换的话,H.265 也挺快!“高”转“低”比较快,“低”转“高”就很慢,H.264 转 H.265 会慢上5-6倍!得同时输出 RTMP、HTTP-FLV、HLS 及其扩展版,支持 H.265!推流推流技术流程转码中心封包(元信息、时序)LibRTMPFFMpegH.264AACCDN 源站RTMPRTMPHTTP-FLVHLS推流稳定性时刻考虑如何省电、省带宽!缩减动画,缩减特效,保CPU,保GPU!内存优化都得定期扫一遍!实时网络探测,线路择优,好路子优先复用!千帆流媒体中心CDN-B 边缘CDN-B 边缘CDN-A 边缘CDN-A
5、边缘CDN-A 中心节点主播A推流CDN-B 中心节点主播B推流我要看主播A我要看主播A我要看主播B我要看主播BCDN 多路互通推流动态配置名称范围默认值特殊情况帧率8-24fps15fps关键帧2-5s4s1视频码率400-1000 kbps800 kbps200 kbps音频码率5 kbps分辨率360P、480P、504P、720P504P全局配置用户级配置个别系统配置监听来电暂停推流压后台来电结束恢复推流监听压后台静音推流保流不断恢复前台恢复音画采集监听断网网络恢复重新推流友好提示中断推流监听网络切换4G WiFi中断推流重新获取推流地址重新推流推流外部监听防护中心转码20ms20ms
6、20ms3s20ms20ms-2s20ms-2s600ms主播推流边缘接收节点高可用GW边缘分发节点中心节点转码边缘分发节点边缘转码近点分发20ms20ms20ms3s20ms20ms-2s20ms-2s600ms主播推流边缘转码节点高可用GW边缘分发节点中心节点边缘分发节点弱网窄带推流网络检测动态码率动态丢帧动态码率网络不稳定重连窄带大码高帧发不出去推流缓慢发送卡顿Buffer累积Yes:赶紧降码儿!包太多?No:重新调高码率动态丢帧Buffer舍弃参考帧关键帧和音频帧降低编码功耗!减少传输数据量!视听保持流畅,画质有保障!还同时解决音视频同步问题!拉流拉流解码渲染播放多种清晰度CDN-AC