关于直播,所有的技术细节都在这里了(2)《转载》

本文转载置顶:http://blog.ucloud.cn/archives/694

感谢作者无私的奉献精神!

 

上篇《 关于直播,所有的技术细节都在这里了(1)《转载》 》我们讲述了如何让直播内容以“最短”路径从主播到观众上,传输层面获得最低延迟,在本篇中我们会介绍直播应用层协议及传输层协议的选择以及对直播体验影响的分析 。

 

直播协议的选择

国内常见公开的直播协议有几个:RTMP、HLS、HDL(HTTP-FLV)、RTP,我们来逐一介绍。

RTMP协议:

是Adobe的专利协议,现在大部分国外的CDN已不支持。在国内流行度很高。原因有几个方面:

1、开源软件和开源库的支持稳定完整。如斗鱼主播常用的OBS软件,开源的librtmp库,服务端有nginx-rtmp插件。

2、播放端安装率高。只要浏览器支持FlashPlayer就能非常简易的播放RTMP的直播,协议详解可以Google了解。相对其他协议而言,RTMP协议初次建立连接的时候握手过程过于复杂(底层基于TCP,这里说的是RTMP协议本身的交互),视不同的网络状况会带来给首开带来100ms以上的延迟。基于RTMP的直播一般内容延迟在2~5秒。

HTTP-FLV协议:

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

HLS 协议:

即Http Live Streaming,是由苹果提出基于HTTP的流媒体传输协议。HLS有一个非常大的优点:HTML5可以直接打开播放;这个意味着可以把一个直播链接通过微信等转发分享,不需要安装任何独立的APP,有浏览器即可,所以流行度很高。社交直播APP,HLS可以说是刚需,下来我们分析下其原理 。

基于HLS的直播流URL是一个m3u8的文件,里面包含了最近若干个小视频TS(一种视频封装格式,这里就不扩展介绍)文件,如 http://www.ucloud.cn/helloworld.m3u8  是一个直播留链接,其内容如下:

假设列表里面的包含5个TS文件,每个TS文件包含5秒的视频内容,那么整体的延迟就是25秒。当然可以缩短列表的长度和单个TS文件的大小来降低延迟,极致来说可以缩减列表长度为1,1秒内容的m3u8文件,但是极易受网络波动影响造成卡顿。

通过公网的验证,目前按同城网络可以做到比较好的效果是5~7秒的延迟,也是综合流畅度和内容延迟的结果。那么HTML5是否可以有更低延迟直接打开的直播流技术呢? 我们在最后会探讨这个问题。

RTP协议:

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

实际应用场景下经常需要RTCP(RTP Control Protocol)配合来使用,可以简单理解为RTCP传输交互控制的信令,RTP传输实际的媒体数据。

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

对比与上述3种或实际是2种协议,RTP和它们有一个重要的区别就是默认是使用UDP协议来传输数据,而RTMP和HTTP是基于TCP协议传输。为什么UDP 能做到如此实时的效果呢?关于TCP和UDP差别的分析文章一搜一大把,这里不在赘述,简单概括:

UDP:单个数据报,不用建立连接,简单,不可靠,会丢包,会乱序;

TCP:流式,需要建立连接,复杂,可靠 ,有序。

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

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

是否有除了HLS外更低延迟的方案?

HLS的优点点是显而易见的:移动端无需安装APP使用兼容HTML5的浏览器打开即可观看,所有主流的移动端浏览器基本都支持HTML5,在直播的传播和体验上有巨大的优势。

而看起来唯一的缺点:内容延迟高(这里也有很多HLS限制没有提到,比如必须是H264+AAC编码,也可认为是“缺点”之一)。如果能得到解决,那将会是直播技术非常大的一个进步。或者换个说法,有没有更低延迟可直接用链接传播的直播方案?不局限于HLS本身。

对于浏览器直接的视频互动,Google一直在推WebRTC,目前已有不少成型的产品出现,可以浏览器打开即实时对话、直播。但来看看如下的浏览器覆盖图:

 

非常遗憾的说,在直至iOS 9.3上的Safari仍然不能支持WebRTC。继续我们的探索,那Websocket支持度如何呢?

除了老而不化的Opera Mini外,所有的浏览器都支持WebSocket。这似乎是个好消息。梳理一下HTML5 WebSocket直播需要解决的问题:

1、后端兼容

2、传输

3、解码播放

对于#1似乎不是特别大问题,对于做过RTMP转HLS、RTP来说是基本功。#2对于浏览器来说使用HTTP来传输是比较好的选项。对于#3 这里推荐一个开源的JS解码项目jsmpeg: https://github.com/phoboslab/jsmpeg,里面已有一个用于直播的stream-server.js的NodeJS服务器。

从测试结果看,该项目的代码相对较薄,还没达到工业级的成熟度,需要大规模应用估计需要自填不少坑,有兴趣的同学可以学习研究。

以上就是直播云:直播应用层协议及传输层协议的选择以及对直播体验影响的分析 。关于接入网络优化、内容缓存与传输策略优化、终端优化,请参阅接下来发布的其他部分。

延迟与卡顿的矛盾关系如何解决?有的时候需要主动丢包?欲知内容缓存与传输策略优化技巧,请关注下一篇解析内容:《关于直播,所有的技术细节都在这里了(3)《转载》》。

-----------------------------------------------------------------

本文转载:http://blog.ucloud.cn/archives/694

转载于:https://www.cnblogs.com/wainiwann/p/6080887.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光刻机的工作原理及关键技术

来源:传感器技术光刻机的工作原理:利用光刻机发出的光通过具有图形的光罩对涂有光刻胶的薄片曝光,光刻胶见光后会发生性质变化,从而使光罩上得图形复印到薄片上,从而使薄片具有电子线路图的作用。这就是光刻的作用&…

sarscape 将dem文件转化成stl_SARscape与SARProz软件中的重要缩写

1.SARscapeSARscape 由 sarmap 公司研发,是国际知名的雷达图像处理软件。 该软件架构于专业的ENVI 遥感图像处理软件之上,提供完整的 SAR 数据处理功能,全面支持四种模式的数据:雷达强度图像处理、雷达干涉测量(InSAR/DInSAR)、极…

很全的路由器默认初始密码集合.txt_UpSet——集合关系可视化神器

学习更多生信小技巧,点上方蓝字关注我们分析背景01提到集合的可视化,大家第一时间想到的是用Venn图来展示,在前期的推文中,小编也给大家分享了venn图的绘制方法。然而,值得一提的是,小编分享的方法是基于R语…

自动驾驶的摩尔定律:无人驾驶的最终实现时间或在2035年丨厚势汽车

来源:厚势汽车 无人驾驶的真正落地时间的预测,近两年从非常乐观迅速转向谨慎甚至悲观。真正的无人驾驶到底还需要多久,无人驾驶初创公司 May Mobility 的 CEO Edwin Olson,针对这个问题,结合已有的数据做了一个推理。他…

电脑屏保海底世界_世界上最后一个深海实验室,隐藏了人类未来的秘密

如果世界末日来了,人类站在荒废的土地上,仓皇奔往未来的逃生门,我们应该往哪去?有人说,是太空。有人说,是海洋。现在有一个地方,正把两者结合起来——Aquarius Reef Base 深海实验室。这个处于海…

Android——检查网络是否已经链接

新建一个项目testNet 添加一个button layout.xml&#xff1a; <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layou…

moment 时间戳_【通知】2020 CATTI 考试准考证打印时间

2020年CATTI考试时间为11月14、15日&#xff0c;11月起将陆续开始打印准考证。建议尽早打印&#xff0c;可以多打印几份备用。各省市准考证打印时间一切信息以考试报名系统为准。重庆&#xff1a;11月6日至13日湖北&#xff1a;11月9日9:00至11月15日13:30四川&#xff1a;11月…

PANS:智力以外的特质,会影响长期成就

来源&#xff1a;中国生物技术网美国宾夕法尼亚大学的亚裔心理学家Angela Duckworth经常会被人问道&#xff1a;是什么因素预示着成功&#xff1f;鉴于Duckworth在“Grit&#xff08;坚毅&#xff09;”研究领域所做的开拓性工作&#xff0c;这是一个可以理解的现象。坚毅这一性…

截取字符串的函数_常用的Excel函数

1.条件判断&#xff1a;IF函数应用数据目的&#xff1a;判断成绩所属的等级方法&#xff1a;在目标单元格中输入公式&#xff1a;IF(C2>90,"优秀",IF(C2>80,"良好",IF(C2>60,"及格","不及格")))&#xff0c;双击小加号填充语…

爱思助手安卓能用吗_专业的苹果越狱工具:爱思助手!

本文由绿盒下载站原创(www.42xz.com)欢迎关注微信公众号“绿盒下载站”爱思助手是一款专业的苹果刷机助手&#xff0c;里面包含了苹果软件、热门游戏、苹果铃声、高清壁纸等多功能&#xff0c;能帮用户轻松管理文件、照片、视频等&#xff0c;爱思助手除了能支持一切苹果手机版…

《麻省理工科技评论》发布2019年全球十大突破性技术!

来源&#xff1a;钱塘大数据《麻省理工科技评论》每年都会评选出当年的“十大突破性技术”&#xff0c;这份在全球科技领域举足轻重的榜单&#xff0c;曾精准预测了脑机接口、智能手表、癌症基因疗法、深度学习等诸多热门技术的崛起。正如比尔盖茨所说&#xff0c;看过这些突破…

给排水规范大全2020_住宅电气、给排水、消防安装工程的质量通病分析

“住宅项目机电安装工程”质量通病分析&#xff0c;从电气工程、给排水工程、消防工程3方面案例分析&#xff0c;各中案例非常值得各施工企业学习。01.电气工程施工质量通病02.给排水工程施工质量通病03.消防工程施工质量通病上述所列质量通病并不是全部&#xff0c;质量通病是…

从ACT-R探讨认知智能

来源&#xff1a; 人机与认知实验室【ACT—R模型最大的不足在于缺乏意向性与形式化的有机结合&#xff0c;这也是AI的瓶颈之一】哈耶克在默知识的基础上发展出了一整套体系&#xff0c;他说&#xff1a;“因为默知识不可表达&#xff0c;所以不可记录&#xff0c;所以不可集中&…

如何看创建媒体日期_汽车各零部件也有身份证,教你们如何看这些部件的出生日期...

大家在逛超市选商品时不知道有没有看产品生产日期的习惯呢?反正小编无论买什么食物&#xff0c;只能是吃进肚子里的都去有意无意的看一下生产日期&#xff0c;这些产品的生产日期也一般都是非常直观的印在外包装上。而汽车由成千上万个零部件组成&#xff0c;每个零部件都来自…

Science发现了改变情绪的大脑受体

来源&#xff1a;中国生物技术网 北京时间11月12日&#xff0c;发表在《Science》上的一篇新研究中&#xff0c;一个国际研究团队在大脑中一个研究甚少的区域发现了一种被认为与消极情绪有关的受体。靶向该受体&#xff0c;可以调节消极情绪。该研究可能会为精神疾病带来更有针…

linux源码下载阿帕奇,Ubuntu 12.04下源码安装Apache

环境&#xff1a;Ubuntu 12.04【简单安装】一般第一次安装Apache都较为顺利。1. 下载并解压rootubuntu:/home/qy/share#tar zxvf httpd-2.2.22.tar.gzrootubuntu:/home/qy/share#cd httpd-2.2.22在http-2.2.22里有文件README和INSTALL&#xff0c;用more命令可以阅读。2. 配置r…

latex自动生成中文目录_texpad: 中文输出+自动参考文献生成(bib+bst)

写在前面&#xff1a;本文仅记录自己在家无聊&#xff0c;接触了下LaTeX。本文是在MAC下使用TexpadMacTeX&#xff0c;进行LaTeX编辑&#xff0c;a.输出中文问题,此问题参考自&#xff1a;texpad中如何使用中文&#xff1f;&#xff08;mac OS&#xff09; - Peregrinatio的回答…

github里的默认域_恕我直言!你对Python里的import一无所知

写 Python 通常我们会怎样导包&#xff1f;可能大部分情况下都是用 import&#xff0c;但除了 import 你还会些什么呢&#xff1f;下面我们来介绍一些骚操作。1. 直接 import 人尽皆知的方法&#xff0c;直接导入即可import os与此类似的还有&#xff0c;不再细讲import ...一般…

为何云原生在吞噬世界 ?

来源&#xff1a;云头条长话短说&#xff0c;本文的目的是帮助你了解云原生的功能及带来的业务效益&#xff0c;并探讨准备迁移到这种新型计算模式的企业面临的种种选择和陷阱。“计算机革命已过去了60年&#xff0c;离微处理器的发明已有40年&#xff0c;现代互联网兴起至今已…

xgboost算法_工业大数据:分析算法

一. 应用背景大数据分析模型的研究可以分为3个层次&#xff0c;即描述分析(探索历史数据并描述发生了什么)、预测分析(未来的概率和趋势)和规范分析(对未来的决策给出建议)。工业大数据分析的理论和技术研究仍处于起步阶段&#xff0c;主要应用场景如下&#xff1a;1. 预测性维…