四年直播小结
Posted 刘兆贤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四年直播小结相关的知识,希望对你有一定的参考价值。
经过4年时间的直播项目洗礼,针对行业的轮廓进行简单探讨,以期待相对全面的理解相关技术。
产品例子,IPTV:Internet Protocol Television,交互式网络电视
交互方式:将加密的视频以IP单播或组播的方式,发送给终端设备,通过DRM(Digital Rights Management数字版权管理)授权或密钥服务端,向终端传送授权或密钥,使终端能够解密视频,进行播放。
视频流程:
1、录播推流:设置视频大小、视频源、音视频码率(越高越清晰)、视频帧率(手机GPU每秒能处理的视频图片数量)、视频镜像、数据流回调等参数,控制摄像头、权限申请、贴纸管理等业务,接入Agora声网API,将流推到远程服务端,客户端通过播放器拉取流信息,并进行视频大小适配等,展示直播场景。
2、视频传输:通过RTMP(Real Time Message Protocol ,TCP传输,效率低有延时但质量高,可以直接在网页端使用,需要CDN)或RTSP(UDP传输-亦可使用TCP拉流,效率高但会丢数据,适合监控,局域网内传输;双通道,一个发播放停止等信令,一个发视频数据)或RTC(Real Time Communication,UDP协议,低延时无卡顿,成本高),解压格式(mkv、rmvb、flv等),将视频(H.264)和音频(AAC)解码成(RGB/YUV)和声音(PCM-Pusle Code Modulation,需要本设备解码,区别于RAW无须解码、直接播放),根据时间戳顺序播放。
3、视频处理:视频编解码、视频分发(支持CDN)、视频切片(支持切割成小段,分到不同引擎)、DHCP(Dynamic Host Configuration Protocol动态主机配置协议,作用:客户端登录时自动获取IP和子网掩码)、组播、SAN
4、视频编解码:应用H.264的编解码标准。优势:1、比H.263和MPEG-4节约50%的码率;2、支持IP包,方便分组传播;3、具备较强的抗误码特性,适应丢包率高、干扰严重的无线传输;4、支持不同网络质量的分级编码传播,可以获得稳定的图片质量。
5、视频存储:SAN(Storage Area Network),集中共享存储,方便进行统一防护和恢复,可用以太网(Ethernet局域网技术,区别于广域网Internet)和光纤通道,Nas只能用以太网,前者重视高性能、低延迟,后者重视易用性、拓展性和更低成本。
问题1:如何将RTMP或RTSP等协议的视频转换成MP4?可以接收H.264视频数据和ACC音频数据,将它们合并形成MP4文件。
问题2:如何减少流量消耗?YUV对比RGB,Y代表明亮度Luma(灰白-黑白电视),UV代表饱合度Chroma(单色-彩色电视),人眼对亮度比色彩更敏感,优势在于后者需要3独立个视频信号同时传输,占用带宽高。如1280*720的图片,一次传输大小为1280*720*3(r+g+b,每个8bit=1byte)/1024/1024=2.64M流量。其中YUV444(1个Y对应1组UV)是全量传输,YUV422(2个Y对应1组UV)和YUV420(4个对应1组UV),则YUV444需要2.64M流量,YUV422需要2.64M*2/3流量,YUV420需要2.64M/2流量。其中YUV和RGB可以进行相互转换。
问题3:单播、广播、组播区别?
单播:点对点;
广播:同一局域网内;
组播:点对多。优势:同一份数据,无需拷贝,减少网络阻塞,类似邮件组,劣势:UDP传输,可能会出现丢失。
问题4:RTSP和RTMP使用场景及区别?RTSP技术用于IPTV,主要应用于普通监控、聊天等实时性比较强的领域,RTMP适合所有摄像头格式,主要用于高质量直播等领域,容易在网页直接播放,低延迟,稳定性高。
可用的直播流地址:
1,RTMP协议直播源
香港卫视:rtmp://live.hkstv.hk.lxdns.com/live/hks
2,RTSP协议直播源,举例:
澳门大桥:rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp
点播:rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
3,HTTP协议直播源,举例:
香港卫视:http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8
CCTV1高清:http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
CCTV3高清:http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8
CCTV5高清:http://ivi.bupt.edu.cn/hls/cctv5hd.m3u8
CCTV5+高清:http://ivi.bupt.edu.cn/hls/cctv5phd.m3u8
CCTV6高清:http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8
苹果提供的测试源(点播):http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear2/prog_index.m3u
问题5:如何进行实时双向请求,进行C/S数据通信?WebSocket。
WebSocket原理:html5的一种通信协议,建立在TCP协议上,实现双向传输,避免轮询造成的资源浪费。
一、特点:
1、使用http建立连接,基于TCP协议实时通信,可配置最大并发数(如IE限制最大6个)。
2、既有http1.1协议的长连接(keep-alive)功能,也有http2.0的多路复用功能(同时发送多个request,收到多个response)。
3、可发送字符串,也可以发送byte数组。
4、简单分为四种状态,opening(conneting)/open/closing/closed;四种事件:open/message/error/close。
二、差异:
1、Socket属于协议抽象层,WebSocket是协议实现层。
2、ws和wss,url请求头,如ws://example.com/request(不支持IP写法,只支持域名写法),两者可类比http和https,前者非安全传输地址(无证书,80端口),后者安全传输地址(有证书443端口)。let socket = new WebSocket("wss://javascript.info/chat");
WSS与HTTPS关系
TCP->HTTP
TCP->TLS->HTTPS
TCP->WS 使用HTTP协议进行握手,然后用WS进行数据传输。
TCP->TLS->WSS 使用HTTPS协议进行握手,然后用WSS进行数据传输。
三、例子请求头:
GET /chat
Host: javascript.info
Origin: https://javascript.info
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Key: Iv8io/9s+lYFgZWcXczP8Q==
Sec-WebSocket-Version: 13
Origin网址用于建立连接,wss进行Socket通信。
问题列表:
1、怎么监听服务端挂掉?心跳包,设置间隔时间,发送empty字段。
2、为什么能实现双工通信?基于TCP通信,客户端向服务端发送数据,服务端返回时包含请求头,可以根据“标记”(如tag)判断出是哪个接口的返回值(http协议只能由客户端发给服务端)。
3、为什么有的浏览器只支持256个连接?Chrome浏览器限制WebSocket的最大连接数就是256。
4、为什么最大连接数只有6万多个?因为端口号是16位的,最大为65535,除去1024之前的预留端口,剩下6万多个。
通过http协议建立连接,使用socket协议进行通信
适用场景:
实时聊天、实时地图、协同编辑、体育赛况等。
问题6、如何加速进入直播间?
一、核心数据前置(如房间号、直播流地址等)。
二、拆分接口,做异步请求。
三、UI预加载,不要在接口请求结束再加载。
四、非重要UI做ViewStub,默认不加载,根据数据结果加载。
Surface/SurfaceFlinger原理:
SurfaceView在一个单独的线程中更新,使用双缓存机制(后台缓冲区先接收数据,填充完整后交换到前台缓存区,两者交替互为前、后缓冲区)避免界面闪烁,在Window上挖孔展示,区别于View需要在主线程中更新,依赖Window展示。
常见直播业务问题:
1、网络变化如何处理?如果重新连接,需要重新拉流,如果网络消失,则提醒网络异常,播放器停留在最后一帧,防止黑屏。
2、根据场景变化、视频分辨率变化等,切换视频播放器及布局大小。
参考:
https://zhuanlan.zhihu.com/p/419738104
https://blog.csdn.net/asd051377305/article/details/108066378
https://zh.javascript.info/websocket
https://blog.csdn.net/reboot123/article/details/7579952
https://www.jianshu.com/p/556ca0c1889b
以上是关于四年直播小结的主要内容,如果未能解决你的问题,请参考以下文章