视频直播中如何进行推流?
1、协议
国内常见公开的直播协议有几个:RTMP、HDL(HTTP-FLV)、HLS、RTP。
RTMP
Real Time Messaging Protocol是 Macromedia 开发的一套视频直播协议,现在属于 Adobe。
使用RTMP技术的流媒体系统有一个非常明显的特点:使用 Flash Player 作为播放器客户端,而Flash Player 现在已经安装在了全世界将近99%的PC上,因此一般情况下收看RTMP流媒体系统的视音频是不需要安装插件的。用户只需要打开网页,就可以直接收看流媒体。
和 HLS 一样都可以应用于视频直播,区别是 RTMP 基于 flash 无法在 iOS 的浏览器里播放,但是实时性比 HLS 要好。所以一般使用这种协议来上传视频流,也就是视频流推送到服务器。
rtmp现在大部分国外的CDN已不支持,在国内流行度很高。原因有几个方面:
- 开源软件和开源库的支持稳定完整。如斗鱼主播常用的OBS软件,开源的librtmp库,服务端有nginx-rtmp插件。
- 播放端安装率高。只要浏览器支持FlashPlayer就能播放RTMP的直播。相对其他协议而言,RTMP协议初次建立连接的时候握手过程过于复杂(RTMP协议本身的交互是基于TCP),视不同的网络状况会带来给首开带来100ms以上的延迟。基于RTMP延迟在2~5秒。
HTTP-FLV
即使用HTTP协议流式的传输媒体内容,直接向后台上传编码后的流媒体数据。相对于RTMP,HTTP更简单和广为人知,而且不担心被Adobe的专利绑架。内容延迟同样可以做到2~5秒,打开速度更快,因为HTTP本身没有复杂的状态交互。所以从延迟角度来看,HTTP-FLV要优于RTMP。
SRS2.0支持该协议:GitHub
HLS
即Http Live Streaming,是由苹果提出基于HTTP的流媒体传输协议。HLS有一个非常大的优点:HTML5可以直接打开播放;这个意味着可以把一个直播链接通过微信等转发分享,不需要安装任何独立的APP,有浏览器即可,所以流行度很高。社交直播APP,HLS可以说是刚需。
Issue:SRS3.0提出了一种增强型HLS+
RTP
Real-time Transport Protocol,用于Internet上针对多媒体数据流的一种传输层协议。
实际应用场景下经常需要RTCP(RTP Control Protocol)配合来使用,可以简单理解为RTCP传输交互控制的信令,RTP传输实际的媒体数据。 RTP在视频监控、视频会议、IP电话上有广泛的应用,因为视频会议、IP电话的一个重要的使用体验:内容实时性强。
对比与上述3种或实际是2种协议,RTP和它们有一个重要的区别就是默认是使用UDP协议来传输数据,而RTMP和HTTP-FLV是基于TCP协议传输。
- UDP:单个数据报,不用建立连接,简单,不可靠,会丢包,会乱序;
- TCP:流式,需要建立连接,复杂,可靠,有序。
实时音视频流的场景不需要可靠保障,因此也不需要有重传的机制,实时的看到图像声音,网络抖动时丢了一些内容,画面模糊和花屏,完全不重要。TCP为了重传会造成延迟与不同步,如某一截内容因为重传,导致1秒以后才到,那么整个对话就延迟了1秒,随着网络抖动,延迟还会增加成2秒、3秒,如果客户端播放是不加以处理将严重影响直播的体验。
是否有除了HLS外更低延迟的方案?
HLS的优点点是显而易见的:移动端无需安装APP使用兼容HTML5的浏览器打开即可观看,所有主流的移动端浏览器基本都支持HTML5,在直播的传播和体验上有巨大的优势。
2、推流
所谓推流,就是将我们已经编码好的音视频数据发往视频流服务器中,常用的第三方库 librtmp-iOS 进行推流,librtmp 封装了一些核心的 API 供使用者调用。例如推流 API 等等,配置服务器地址,即可将转码后的视频流推往服务器。一般的推流服务器都配置了服务器端信息。
推流SDK
百度云推流SDK:七牛推流SDK: 网易云推流SDK:腾讯云推流SDK:其他推流SDK:
推流服务器
那么如何搭建一个推流服务器呢?
简单的推流服务器搭建,服务器支持 RTMP ,大概需要以下几个步骤:
- 安装一台 nginx 服务器。
- 安装 nginx 的 RTMP 扩展,
- 配置 nginx 的 conf 文件
- 重启 nginx,将 RTMP 的推流地址写为 rtmp://ip:1935/hls/mystream,其中 hls_path 表示生成的 .m3u8 和 ts 文件所存放的地址,hls_fragment 表示切片时长,mysteam 表示一个实例,即将来要生成的文件名可以先自己随便设置一个。图玩智能科技为企业提供专业的直播技术支持,提供直播平台的二次开发服务,搭建更具完善更加稳定的直播系统,欢迎咨询www.toivan.com.
以上是 视频直播中如何进行推流? 的全部内容, 来源链接: utcz.com/z/516594.html