【视频直播】相关概念及流程

直播相关概念

常用的几种视频协议是:RTMP、HTTP-FLV、HLS、RTP/RTCP协议。

(1)视频直播协议

直播类型分类:交互式直播,非交互式直播

非交互式直播主要是单向性,如nba直播,用户不与主播发生交互行为,视频允许的延时时间较为宽松,特点是源较少,适合做多路转码。

交互式直播:如抖音直播等,用户与主播之间的交互较为频繁,所以对延时性的要求比较严格,特点是源较多,不适合做多路转吗,中间服务器作为中转角色。

 

直播内容传输的介质是网络,在网络中传输视频音频数据,需要相应的协议,目前适合直播场景的常用协议有下面几种:

1,rtmp协议 (h5不支持, flash支持)

RTMP是一种流媒体协议,是Adobe的专利协议。基于TCP,在国内的使用流行度很高。

流行原因:开源软件和开源库的支持稳定完整,最常用的推流和拉流的解决方案基本上能够很稳定的运行。如:开源的librtmp推流库,服务端有nginx-rtmp插件,拉流有ijkPlayer播放库。

 

2,http-flv协议(h5不支持,flash支持)

即使用HTTP协议流式的传输媒体内容。相对于RTMP,HTTP更简单和广为人知。内容延迟同样可以做到2~5秒,打开速度更快,因为HTTP本身没有复杂的状态交互。所以从延迟角度来看,HTTP-FLV要优于RTMP。

 

3,hls协议(html支持,flashz支持)

即Http Live Streaming,是由苹果提出基于HTTP的流媒体传输协议。HLS有一个非常大的优点:HTML5可以直接打开播放;这个意味着可以把一个直播链接通过微信等转发分享,不需要安装任何独立的APP,有浏览器即可,所以流行度很高。社交直播APP,HLS可以说是刚需 。基于HLS的直播流URL是一个m3u8的文件,里面包含了最近若干个小视频TS(一种视频封装格式,这里就不扩展介绍)文件。这种播放形式的延时比较高(与TS文件的大小有关系),同城网络下能够做到5~7秒的延时。

 

4,rtp/rtcp协议

即 Real-time Transport Protocol,用于Internet上针对多媒体数据流的一种传输层协议。

RTCP传输交互控制的信令,RTP传输实际的媒体数据。

RTP在视频监控、视频会议、IP电话上有广泛的应用,因为视频会议、IP电话的一个重要的使用体验:内容实时性强。

对比上述3种协议,RTP和它们有一个重要的区别就是默认是使用UDP协议来传输数据,而RTMP和HTTP是基于TCP协议传输。

使用场景分析:实时音视频流的场景不需要可靠保障,因此也不需要有重传的机制,实时的看到图像声音,网络抖动时丢了一些内容,画面模糊和花屏,完全不重要。TCP为了重传会造成延迟与不同步,如某一截内容因为重传,导致1秒以后才到,那么整个对话就延迟了1秒,随着网络抖动,延迟还会增加成2秒、3秒,如果客户端播放是不加以处理将严重影响直播的体验。如何进行优化,会在后面的文章中进行讲解。

总结:在直播协议的选择中,如果选择是RTMP或HTTP-FLV则意味着有2~5秒的内容延迟,但是就打开延迟来说,HTTP-FLV 要优于RTMP。HLS则有5~7秒的内容延迟。选择RTP进行直播则可以做到1秒内的直播延迟。但就目前所了解,各大CDN厂商没有支持基于RTP直播的,所以目前国内主流还是RTMP或HTTP-FLV。

 

(2)视频直播流程

视频直播相关的技术方面的流程为:实时视频流的采集 -- > 视频流的编码 -- > 视频流的传输 --> 视频流的解码 --> 视频播放。

1. 实时视频采集实现思路 

a). 通过Android Camera 拍摄预览中设置setPreviewCallBack实现onPreviewFrame接口,实时截取每一帧视频流的数据。

b). 通过Android的MediaRecorder,在SetoutputFile函数中绑定LocalSocket实现。

c). 流媒体服务器方式,利用FFmpeg或者GetStreamer等获取Camera视频。

2. 视频压缩编码实现思路 

a). 不编码,直接通过Socket传输原始YUV420SP视频帧。

b). JEPG. 将原始YUV420SP视频帧压缩成H.264再传输。

c). H.264/AVC.将原始YUV420SP视频帧压缩成H.264再传输,常见的基于H264的开源Encoder有JM、X264、T264、Hdot264等

d). MPEG4.将原始YUV420SP视频帧压缩成MPEG4再传输

3. 视频传输实现思路 

a). SOCKET传输

b). HTTP传输

c). RTP/RTSP传输

d). 流媒体服务器方式,如live555等

4. 视频解码实现思路 

a). 与编码对应的解码器

5. 视频播放实现思路 

a). 通过Android VideoView

b). 通过Android MediaPlay

c). 通过Canvas直接粘贴帧图

 

三、推荐学习资料

来疯直播相关博客文章:

Android手机直播(一)总览

Android手机直播(二)摄像机

Android手机直播(三)声音采集

Android手机直播(四)Android Media API

 

 

参考:https://www.cnblogs.com/renhui/p/6394327.html

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值