关于直播,所有的技术细节都在这里了(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语…

imp-00017 oracle2298,急,imp怪異問題,請高手協助

我原有系統平台是:window2003 32位oracle9.0 32位版本,現exp導出dmp文件后,想倒入到linux 64位 oracle10。2.0.4 64位平台上,但倒了幾次老提示以下錯誤。請高手協助,謝謝。IMP-00041: 警告:創建的對象帶有編譯警告&quo…

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

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

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

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

oracle 怎么备份sqlserver数据库,Oracle和sqlserver数据库的备份与恢复

Oracle 数据库的备份与恢复当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(包括机器故障、介质故障、误操作等),数据库有时也可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如果平时对数…

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…

自学python在家怎么上班_【经验分享】转行如何自学Python并且找到工作,分享自己心得...

目前信息化产业发展势头很好&#xff0c;互联网就成为了很多普通人想要涉及的行业&#xff0c;因为相比于传统行业&#xff0c;互联网行业涨薪幅度大&#xff0c;机会也多&#xff0c;所以就会大批的人想要转行来学习Python开发。零基础学习Python必须明确的几点&#xff1a;1.…

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月…

less

编译器koala注释 /**///变量&#xff1a; variable_width&#xff1a;500px&#xff1b;混合&#xff08;mixin&#xff09; .border{border:1px solid red; } .box{.border;width:150px;height:150px;background: blue; } .border_02(border_width){border:solid #fff border_…

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

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

linux80端口检查,Linux下基于端口的服务检查脚本

Linux下基于端口的服务检查脚本#!/bin/bash#program:Usingtostudythe[if...then...fi]program#dsk2007/10/83:00#content:Iwillusingthisprogramtoshowyousevices#1.printtheprogramsworkinyourscreenecho "Now,the service of your Linux system will be detect!"ec…

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

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

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

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

jsp fmt标签详解

详见&#xff1a;http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt326 JSTL标签提供了对国际化&#xff08;I18N&#xff09;的支持&#xff0c;它可以根据发出请求的客户端地域的不同来显示不同的语言。同时还提供了格式化数据和日期的方法。实现这些功能需要I18N…

linux 内核模块开发,Linux内核模块开发(笔记)

Linux内核模块开发(笔记)作者&#xff1a;扶凯 来源: 扶凯 时间&#xff1a;2011-11-21 00:21:11 人气&#xff1a;249 评论&#xff1a;0标签&#xff1a; 内核个人笔记。。在不放过来都快找不到了。有空还得好好整理一下了。调试方法printk() 是用来调试内核最常用的一种技术…

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

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

猿辅导python编程老师面试_猿辅导辅导老师面试过程➕感受

一个周前拿到了猿辅导的offer&#xff0c;看到很多知有在问猿辅导的面试&#xff0c;碰巧又是秋招季&#xff0c;就在这里给大家谈一下我的面试过程和感受。先放一张我的的offer我在之前的文章中介绍过自己&#xff0c;因为是二本财务专业毕业&#xff0c;工作比较难找&#xf…

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

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