1、提案 直播技术方案直播应用场景01视频聊天02直播答题03社交平台04远程教育05远程医疗06单兵作业常用直播功能项观看直播聊天礼物房间逻辑用户逻辑系统设置直播列表录播主播直播流程音视频采集视频滤镜音视频编码推流流媒体服务器拉流音视频解码音视频播放直播协议RTMPHTTP-FLVHLS优势:实时性高(延时 13秒),编码兼容性高,稳定性高劣势:播放兼容性差,RTMP最大软肋,因为是Adobe的私有协议,很多设备都无法直接播放优势:性能高(延时 13秒),所以从延迟角度来看,HTTP-FLV要优于RTMP。(服务器上直接转码成http-flv,客户端直接观看)劣势:移动端对于HTTP的支持不是很
2、完善优势:自适应码率流播劣势:实时性差,基本上HLS的延迟在10秒以上流媒体开发帧:每帧代表一幅静止的图像码率:图片进行压缩后每秒显示的数据量。流媒体开发:网络层(socket)负责传输,协议层(rtmp或hls)负责网络打包,封装层(flv、ts)负责编解码数据的封装,编码层(h.264和aac)负责图像,音频压缩。帧率:每秒显示的图片数。影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。直播架构FFmpeg框架:编解码,推流h264框架:视频格式转换librtmp框架:推流1.音视频采集2.视频处理(美颜、水印)3.音视频编码压缩4.将音视频封装成flv格
3、式nginx+rtmp_moduleRed5SRS1.数据分发(CDN)2.实时转码3.截屏:展示主播封面4.录制视频FFmpeg框架:编解码,拉流ijkPlayer框架:播放librtmp框架:推流1.拉取flv视频流2.音视频解码3.播放4.聊天互动推流URL拉流URL推流rtmp拉流rtmphlsflv采集端逻辑采集端业务服务器流媒体服务器创建房间创建直播流返回直播流返回直播流地址推流到直播流地址播放端逻辑播放端业务服务器流媒体服务器查询房间列表返回房间列表及播放地址拉流播放流媒体服务器SRS:一款国人开发的优秀开源流媒体服务器系统BMS:也是一款流媒体服务器系统,但不开源,是SRS的商
4、业版,比SRS功能更多nginx:免费开源web服务器,也常用来配置流媒体服务器。集成Rtmp_module即可。Red5:是java写的一款稳定的开源的rtmp服务器。最简单Demo1、环境:ubuntu、centos、archlinux、debian等主流linux系统2、下载并配置nginx+rtmp_module服务3、安装 ffmpeg、vlc4、推流:ffmpeg-r 25-f dshow-s 640480-i video=”video source name”:audio=”audio source name”-vcodec libx264-b 600k-vpre slow-ac
5、odec libfaac-ab 128k-f flv rtmp:/127.0.0.1:1935/live/test5、播放:vlc rtmp:/127.0.0.1:1935/live/test开发技术点服务器的搭建与部署:nginx+rtmp_module /Red5 /SRS/livegoffmpeg 编解码:C/C+ijkplayer:一个基于FFmpeg的开源Android/iOS视频播放器(开源)API易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电简单易用,指定拉流URL,自动解码播放.消息互动:即时消息通讯,通过网络实时传输文字、图片、语音、与视频 客户端:PC、ANDROID、IOS、HTML5opencv 图像处理(磨皮、美颜等):C+方案选择自研第三方SDK长远来看,自己开发更节省成本,技术层面比直接使用第三方SDK更可控时间成本与风险比直接使用第三方SDK要大。效率高、风险低由于存在授权、版权的费用,长期使用不划算技术层面存在不可控因素技术延展结合tensorflow 做视频分析比如:车牌号识别、人脸识别、动物识别等视频内容搜索比如:在视频中搜索一只小猫,查找嫌疑犯、鉴黄等谢谢