一、视频云

1、视频云是什么?

视频云是基于云计算技术的理念,采用视频作为“云端”向“终端”呈现处理结果的一种云计算方案,包括云储存、云转码、云直播、云加密、云发布等功能。应用在云端服务器上运行,将运行的显示输出、声音输出编码后经过网络实时传输给终端,终端进行实时解码后显示输出。

2、基本架构

整个视频从制作到播放的流程一共分为三个部分(下面那张图可以非常清晰的看清楚):

  • 采集端:内容提供方采集的视频首先会被编码为特定的格式;采集和渲染会用到具体硬件平台的接口,这和具体硬件设备的接口、设计和性能等密不可分。因此,在系统设计阶段,就要考虑硬件设备的兼容性和跨平台。
  • 服务端:视频在上传到云服务器后,为适应不同的网络环境和播放终端通常会在云端进行转码,服务端会提供包括数据统计、内容审核、实时水印等在内的个性化增值服务。编解码环节会涉及到具体硬件芯片的处理能力,主要有两类:硬编硬解和软编软解。
  • 播放端:视频经由内容分发网络(CDN)加速分发,通过解码最终在内容消费方的终端设备上实现播放。

视频云服务划关键词:视频、云服务。

  • 视频的意思也就是之前上面的解释中排除内容提供和内容消费一头一尾所提供的所有服务。换句话说就是播放视频的一整套流程。举个例子,如果你要做一个视频聊天的软件,通过使用视频云服务厂商提供的服务(通常是SDK的形式)即可。也就是说,你不用管整个视频是怎么编码分发解码的,你只需要提供视频的内容和视频的消费方即可。因此,这也是市场高度分工化的体现,大大降低了视频功能的技术门槛。
  • 云服务的意思就是,往往这些厂商都是把内容放在云服务器上的,比如AWS、阿里云等。也就是说你可以直接调用他们的接口,而不需要下载他们的软件。所以收费一般是按年/季/月来付,而不是像传统软件那样一次性支出。

3、应用

在赛事直播领域,腾讯云与英雄联盟、PUBG绝地求生、王者荣耀、穿越火线四大头部电竞职业赛事深度合作,凭借稳定的技术打通从赛事现场,到直播平台,再到用户,承载了90%的全网流量。其中,通过在赛事举办地建立源站,腾讯视频云为赛事现场到直播平台间提供一条更稳定的传输通道。

同时,我们给直播平台提供的下行全链路护航,也保障了直播平台和用户间的传输状态,助力直播平台为用户提供更高清稳定的直播效果。在此基础上,腾讯视频云还推进了10M码率赛事源流,满足更高清的观看需求。

2018英雄联盟世界总决赛中,通过应用CDN类产品X-P2P,腾讯视频云保障了低延时直播体验,在不影响观众感受的同时,为直播平台节省了大量带宽成本(各位lol爱好者应该懂的,看直播不卡到底有多爽)

除了游戏比赛,其他领域的直播也可以通过视频云提升观感。

世界杯期间,通过应用腾讯视频云的直播极速高清转码技术,直播平台在节省50%带宽成本的基础上,仍旧为用户带来了更高清的赛事直播体验。

除此之外,视频云也能够为各个行业带来更多可能。

在提倡“最多跑一趟”的政务领域,就可以有视频云的助力。例如腾讯云与烟台市公安局联手打造的新型直播互动式报警平台,通过开放双向音视频通话技术,实现24小时快捷视频报警。假如有人遇到被尾随的情况,直接通过微信公众号就能与民警视频通话。

教育领域,VIPKID主打的在线青少儿英语教学也离不开视频服务的助力。在线视频服务可以打破地域和时间的限制,让视频直播听课、1V1在线教学广泛应用,满足教育领域的业务需求。除VIPKID外,我们还助力好未来、新东方等知名企业在线课堂技术和体验的升级。

电商领域,大家已经逐渐从通过“图片”了解商品转变为观看“直播”了。在“双十二”期间,面临流量高峰期考验,腾讯视频云为东南亚电商巨头Shopee提供T级海外带宽支持,缓解了高峰期间的千万级别流量压力,保障了直播稳定性。

二、流媒体

流媒体技术是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送。

在网上传输音频、视频等多媒体信息目前主要有两种方式:下载流式传输。采用下载方式,用户需要先下载整个媒体文件,然后才能进行播放。由于网络带宽的限制,下载常常要花很长时间,所以这种处理方式延迟很大。流媒体实现的关键技术是流式传输,可传送现场影音或预存于服务器上的影片。传输之前首先对多媒体进行预处理(降低质量和高效压缩),然后使用缓存系统来保证数据连续正确地进行传输。使用流式传输方式,用户不必像采用下载方式那样要等到整个文件全部下载完毕,而是只需经过几秒到几十秒的启动延时即可在客户端进行播放和观看,此时媒体文件的剩余部分将在后台继续下载。与单纯的下载方式相比,这种对多媒体文件边下载边播放的流式传输方式不仅使启动延时大幅度地缩短,而且对系统缓存容量的需求也大大降低。使用流式传输的另一个好处是使传输那些事先不知道或无法知道大小的媒体数据(如网上直播、视频会议等)成为可能。

因为Interent是以包为单位进行异步传输的,因此多媒体数据在传输中要被分解成许多包,由于网络传输的不稳定性,各个包选择的路由不同,所以到达客户端的时间次序可能发生改变,甚至产生丢包的现象。为此,必须采用缓存技术来纠正由于数据到达次序发生改变而产生的混乱状况,利用缓存对到达的数据包进行正确排序,从而使音视频数据能连续正确地播放。缓存中存储的是某一段时间内的数据,数据在缓存中存放的时间是暂时的,缓存中的数据也是动态的,不断更新的。流媒体在播放时不断读取缓存中的数据进行播放,播放完后该数据便被立即清除,新的数据将存入到缓存中。因此,在播放流媒体文件时并不需占用太大的缓存空间。

三、流媒体传输的相关协议

多媒体应用的一个显著特点是数据量大,并且许多应用对实时性要求比较高。传统的TCP 协议是一个面向连接的协议,它的重传机制和拥塞控制机制都是不适用于实时多媒体传输的。UDP 虽然没有TCP 那么可靠,并且无法保证实时业务的服务质量,需要RTCP 实时监控数据传输和服务质量。但是由于UDP 的传输时延低于TCP,能与音频和视频很好地配合。因此在实际应用中,RTP/ RTCP/ UDP 用于音频/ 视频媒体,而TCP 用于数据和控制信令的传输。

目前,支持流媒体传输的协议主要有实时传输协议RTP、实时传输控制协议RTCP 、实时流协议RTSP、实时消息传输协议RTMP。

1、RTP(Real-time Transport Protocol,实时传输协议)

威胁多媒体数据传输的一个尖锐的问题就是不可预料数据到达时间,而流媒体的传输是需要数据的实时到达用以播放和回放。RTP协议提供了时间标签、序列号以及其它的结构用于控制实时数据的流放。在流的概念中,”时间标签”是最重要的信息,发送端依照即时的采样在数据包里隐蔽地设置了时间标签。接收端收到数据包后,就依照时间标签按正确的顺序恢复成原始的实时数据。通常RTP算法并不作为一个独立的网络层来实现,而是作为应用程序代码的一部分。

RTP通常和UDP协议一起使用,RTP的协议数据单元是用UDP分组来承载的。RTP本身只是传输层协议,但没有运输层协议的完整功能,只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。这样,对于那些丢失的数据包,不存在由于超时检测而带来的延时,同时,对于那些丢弃的包,也可以由上层根据其重要性来选择性的重传。比如,对于I帧、P帧、B帧数据,由于其重要性依次降低,故在网络状况不好的情况下,可以考虑在B帧丢失甚至P帧丢失的情况下不进行重传,这样,在客户端方面,虽然可能会有短暂的不清晰画面,但却保证了实时性的体验和要求。

RTP的会话过程

当应用程序建立一个RTP会话时,应用程序将确定一对目的传输地址。目的传输地址由一个网络地址和一对端口组成:一个端口给RTP包,一个端口给RTCP包,使得RTP/RTCP数据能够正确发送。RTP数据发向偶数的UDP端口,而RTCP数据发向相邻的奇数UDP端口(偶数的UDP端口+1),这样就构成一个UDP端口对。 RTP的发送过程如下,接收过程则相反。

RTP协议从上层接收流媒体信息码流(如H263),封装成RTP数据包;RTCP从上层接收控制信息,封装成RTCP控制包。RTP将RTP数据包发往UDP端口对中偶数端口;RTCP将RTCP控制包发往UDP端口对中的接收端口。

RTP实现实时传输的方法

  • RTP可以根据RTP包的序列号来排序接收到的乱序数据包
  • RTP可以根据RTP包的时间戳来获得数据包的时序。
  • RTP可以根据声音流和图像流的相对时间(即RTP包的时间戳),以及它们的绝对时间(即对应的RTCP包中的RTCP),可以实现声音和图像的同步。

RTP不是不可以作为直播平台的技术选项,只是目前缺乏很好的支持,需要自己进行定制开发的部分较多。并且还需要考虑WebRTC目前的兼容性问题。

2、RTCP(Real-Time Transport Control Protocol,实时传输控制协议)

RTCP提供流量控制和拥塞控制服务,本身并不传输数据。周期性的RTCP包中含有已发送的RTP数据包的数量、丢失的数据包数量等统计资料,用来传监听服务质量和交换会话用户信息等功能,因此服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特适合传送网上的实时数据。

3、RTSP(Real-Time Stream Protocol,实时流协议)

RTSP协议是一个基于文本的多媒体播放控制协议,属于应用层。RTSP以客户端方式工作,对流媒体提供播放、暂停、后退、前进等操作。

RTSP提供了一个可供扩展的框架,使实时数据(如音频和视频)的受控和点播变得可能,它主要用来控制具有实时特性的数据的发送,但其本身并不用于传送流媒体数据,而必须依赖下层传输协议(如RTP/RTCP)所提供的服务来完成流媒体数据的传送。RTSP定义了一对多应用程序如何有效地通过IP网络传送多媒体数据,负责定义具体的控制信息、操作方法、状态码,以及描述与RTP之间的交互操作。流媒体服务协议框架如下:

(1)RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。RTSP与HTTP相比,特点如下:

  1. RTSP传送的是多媒体数据,而HTTP传送HTML超链接文档;
  2. RTSP引入了几种新的方法,比如DESCRIBE、PLAY、SETUP 等,并且有不同的协议标识符,RTSP为rtsp 1.0,HTTP为http 1.1;
  3. RTSP为每个会话保持状态,而HTTP是无状态的协议;
  4. RTSP协议的客户端和服务器端都可以发送Request请求,而在HTTPF 协议中,只有客户端能发送Request请求。 点对点的手机可视通话,必须在手机终端实现RTSP。
  5. 在RTSP协议中,载荷数据一般是通过带外方式来传送的(除了交织的情况),及通过RTP协议在不同的通道中来传送载荷数据。而HTTP协议的载荷数据都是通过带内方式传送的,比如请求的网页数据是在回应的消息体中携带的;
  6. RTSP使用URI请求时包含绝对URI。而由于历史原因造成的向后兼容性问题,HTTP/1.1只在请求中包含绝对路径,把主机名放入单独的标题域中;

(2)一次基本的RTSP操作过程如下:

  1. 首先,客户端连接到流服务器并发送一个RTSP描述命令(DESCRIBE)。
  2. 流服务器通过一个SDP描述来进行反馈,反馈信息包括流数量、媒体类型等信息。
  3. 客户端分析该SDP描述,并为会话中的每一个流发送一个RTSP建立命令(SETUP),RTSP建立命令告诉服务器客户端用于接收媒体数据的端口。
  4. 流媒体连接建立完成后,流服务器再向客户端发送反馈信息。
  5. 客户端再发送一个播放命令(PLAY),服务器就开始在UDP上传送媒体流(RTP包)到客户端。 在播放过程中客户端还可以向服务器发送命令来控制快进、快退和暂停等。
  6. 最后,客户端可发送一个终止命令(TERADOWN)来结束流媒体会话。

(3)客户端要播放RTSP媒体流,就需要知道媒体源的URL,RTSP的URL格式一般如下:

rtsp://host[:port]/[abs_path]/content_name

  • host: 有效的域名或IP地址;
  • port: 端口号,缺省为554,若为缺省可不填写,否则必须写明。

例如,一个完整的RTSP URL可写为:

rtsp://192.168.1.67:554/test

又如目前市面上常用的海康网络摄像头的RTSP地址格式为:

rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream

示例:

rtsp://admin:12345@192.168.1.67:554/h264/ch1/main/av_stream rtsp://admin:12345@192.168.1.67/mpeg4/ch1/sub/av_stream

(4)RTSP 和RTP的关系

RTP不像HTTP和FTP可完整的下载整个影视文件,它是以固定的数据率在网络上发送数据,客户端也是按照这种速度观看影视文件,当影视画面播放过后,就不可以再重复播放,除非重新向服务器端要求数据。

RTSP与RTP最大的区别在于:RTSP是一种双向实时数据传输协议,它允许客户端向服务器端发送请求,如回放、快进、倒退等操作。当然,RTSP可基于RTP来传送数据,还可以选择TCP、UDP、组播UDP等通道来发送数据,具有很好的扩展性,它是一种类似于HTTP协议的应用层协议。

4、RTMP(Real Time Messaging Protocol,实时消息传输协议)

RTMP基于TCP协议,属于应用层,默认使用端口1935。RTMP协议是一种用来进行实时数据通信的网络协议,主要用来在Flash/AIR客户端平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。RTMP协议就像一个用来装数据包的容器,这些数据既可以是AMF格式的数据,也可以是FLV中的视/音频数据。一个单一的连接可以通过不同的通道传输多路网络流,这些通道中的包都是按照固定大小的包传输的。

播放一个RTMP协议的流媒体需要经过握手(HandShake),建立网络连接(NetConnection),建立网络流(NetStream),播放四个步骤。其中网络连接代表服务器端应用程序和客户端之间基础的连通关系,网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个网络连接,但是基于该连接可以创建很多网络流。他们的关系如图所示:

RTMP是主流的推流协议,其他的还有HLS等。所谓推流,指的是把采集阶段封包好的内容传输到服务器的过程。用大白话讲,推流就是把音视频数据(经过编码压缩后通过网络上传到云端/后台服务器。

RTMP协议中,视频必须是H264编码,音频必须是AAC或MP3编码,且多以FLV格式封包。对CDN支持良好,实现难度较低,是大多数的直播平台的选择。不过RTMP有着一个最大的不足——不支持浏览器,且Adobe已不再更新。因此直播服务要支持浏览器的话,需要另外的推送协议支持。

5、HLS(Http Live Streaming,基于HTTP的自适应码率流媒体传输协议)

HLS是由Apple公司定义的基于HTTP的流媒体实时传输协议,它的原理是将整个流分为多个小的文件来下载,每次只下载若干个。服务器端会将最新的直播数据生成新的小文件,客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。基本上,HLS是以点播的技术实现了直播的体验。因为每个小文件的时长很短,客户端可以很快地切换码率,以适应不同带宽条件下的播放。
分段推送的技术特点,决定了HLS的延迟一般会高于普通的流媒体直播协议。

传输内容包括两部分:一是M3U8描述文件,二是TS媒体文件。TS媒体文件中的视频必须是H264编码,音频必须是AAC或MP3编码。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短。

视频云、流媒体以及相关协议的理解相关推荐

  1. 网站视频解析服务器,视频云解析服务器

    视频云解析服务器 内容精选 换一换 通过cmd进入DOS系统,并在DOS系统中执行以下任意一个命令,检查域名解析是否生效.命令一:ping 域名地址命令二:nslookup -qt=cname 域名地 ...

  2. 网易视频云分享:流媒体技术介绍(上篇)

    网易视频云分享:流媒体技术介绍(上篇) 网易视频云2016-04-14 11:49:49 创业 媒体 技术 阅读(949)评论(0) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代 ...

  3. 对于2019全国高速公路视频联网工作实施方案的理解:视频上云网关与省级视频云平台

    为加快推进"可视.可测.可控.可服务"的高速公路运行监测体系建设,不断提升服务能力和监管水平,更好地满足人民群众高品质雏形需求,在2019年11月交通运输部印发了<全国高速公 ...

  4. 树莓派基于ffmpeg+阿里云流媒体服务器实现视频直播

    一些基础理论知识准备 致敬雷神 [总结]FFMPEG视音频编解码零基础学习方法 https://blog.csdn.net/leixiaohua1020/article/details/1581197 ...

  5. 【解决方案】rtsp/gb28181/ehome协议视频融合共享平台安防视频云服务EasyCVR基于社区人脸识别系统的解决方案

    一.人脸识别优势 人脸识别技术特指利用比较不同人脸视觉特征信息进行身份鉴别的最新识别技术,属于生物特征识别技术的一种.人脸识别技术是一种基于人的脸部特征,对输入的人脸图像或者视频流进行处理,根据每个脸 ...

  6. 安防互联网无插件直播如何将支持Ehome协议的设备接入新版安防视频云服务平台EasyCVR?

    EasyCVR是由TSINGSEE青犀视频团队研发的一套安防视频云服务融合平台.它主要适合多品牌.多协议.多通道的安防网络设备的接入,可以将RTSP协议.RTMP协议.GB28181国标协议.海康SD ...

  7. Android平台视频相关的多媒体技术理解笔记

    做了几年的视频相关项目,一直没有系统的对所涉技术进行整理,趁着最近有点事情,整理归纳一下.多媒体技术还是一个相当大而全的领域,我是做视频的,只谈一下视频所涉的一些技术点的理解,平台是基于Android ...

  8. 音视频学习之rtsp学习rtp协议的理解(rtp)

    1:理论理解相关细节 实际的媒体数据(视频/音频)的传输是通过rtp进行传输的. rtp可以基于udp进行发送,也可以基于tcp进行发送. (这个有点疑问,看很多都说rtp是基于udp传输) ==&g ...

  9. 2021年4月1日 深入理解网络层和传输层相关协议!!!

    深入理解网络层和传输层相关协议!!! ARP/ICMP/TCP和UDP协议!!! 关于ARP ARP协议概述 局域网中主机的通信 ·IP地址与MAC地址 什么是ARP协议 ·Address Resol ...

最新文章

  1. 2020年的AI现状
  2. JDK注解(内置和自定义)
  3. 两个Double相加,小数点有很多位问题
  4. yii html 添加下拉框,php – Yii2下拉列表:在我的选项中添加像data-food =“…”这样的html标记...
  5. JAVA生产者消费者的实现
  6. JVM Troubleshooting
  7. 在Kali系统配置临时IP和静态IP
  8. 测试@Test启动报错解决方案
  9. 两种方法求x的n次幂
  10. mysql富文本_mysql模糊查询富文本的文本内容
  11. 最优控制理论 八、CasADi求解路径约束轨迹优化的多重打靶法
  12. 重塑规则 定义未来 三星Galaxy S22系列中国发布
  13. xamarin Android activity生命周期详解
  14. html li点隐藏,js控制li的隐藏和显示实例代码
  15. 我退休金只有2000块钱能去海南三亚养老吗?
  16. 如何干净地卸载VMware
  17. 【VScode】搜索栏语法
  18. 台湾鑫创SSS1700最新版中文说明书|SSS1700最新版中文规格书|SSS1700datasheet中文讲解
  19. 大数据行业如何获取高薪岗位offer?
  20. steam插件_教程丨如何查询Steam游戏的历史价格信息

热门文章

  1. 我来补充两句京东和企业软件
  2. ES6——super关键字
  3. PDF文件怎么在线压缩?教你在线压缩的方法
  4. CodeForces 39C
  5. 神州租车确定将从港股退市:上半年亏43亿元,联想控股彻底退出
  6. 周鸿祎:无线互联网的垄断形势将更严峻
  7. Linux硬件资源管理
  8. 一、【s3c2440移植u-boot-2016-11】拷贝代码并在NOR Flash上启动u-boot
  9. MySQL用户创建及赋权
  10. 使用Matlab转换高阶方程自变量和因变量