其中上行RTMP推流很普遍了,很多游戏直播都使用obs推RTMP流。
在整个过程中,涉及很多流媒体的基本概念,先说说GOP。
GOP即Group of picture(图像组),指两个I帧之间的距离。即几秒有一个关键帧。分析线上主流的移动直播APP,大都在2、3秒之间。
一般的云服务公司都会提供多种协议的拉流方式,优缺点如下:
l HLS协议,移动h5浏览器支持较好,但是延迟较大。移动端播放前需要产生三个分片,每个分片至少得是一个GOP。一个GOP即使是2秒,也意味着这个环节耗费了6秒的延时。
l RTMP协议,需要访问1935端口,支持双向互动,实时性很好,PC flash原生支持。
l HTTP-FLV,不支持双向互动,实时性和RTMP协议一致。
基于以下几点理由,小弟准备采用HTTP-FLV作为拉流协议:
1. 国内网络情况的恶劣程度,并不是每个网络防火墙都允许1935包通过。
2. RTMP协议和HTTP-FLV,实际传输的内容都是相同的FLV,实时性也一样。
3. RTMP协议握手方式比HTTP复杂。
确定好了拉流协议,再看看推流侧依赖的参数。
l FPS,每秒编码传输的视频帧数;
l 码率,每秒编码传输的音视频比特数;
l GOP,关键帧间隔;
1) 能完全运行起来的是金山云、百度云提供的SDK。
我们先看下搭建一个完整的手机直播都包含哪些必须的环节:
推流端(采集、前处理、编码、推流),
服务端处理(转码、录制、截图、鉴黄),
播放器(拉流、解码、渲染)、
互动系统(聊天室、礼物系统、赞)