Internet上的音频/视频概述
Internet上的音频/视频概述
- 计算机网络最初是为传送数据信息设计的。因特网 IP 层提供的“尽最大努力交付”服务,以及每一个分组独立交付的策略,对传送数据信息也是很合适的。
- 因特网使用的 TCP 协议可以很好地解决网络不能提供可靠交付这一问题。
1.1.多媒体信息的特点
- 多媒体信息(包括声音和图像信息)与不包括声音和图像的数据信息有很大的区别。
- 音频视频:占用的带宽高,要求网速恒定,延迟低。多媒体数据往往是实时数据,要求在发送数据的同时,在接收端边接收边播放。
- 数据信息:对带宽和延迟要求不高,也不要求网速是否恒定。
1.2.延迟的种类

- 发送延迟:计算机中的数据包从开始发送到离开网卡所用的时间。
- 传播延迟:数据包从出网卡到路由器所用的时间。
- 排队延迟:数据包在路由器的接口处排队等待处理所用的时间。
- 处理延迟:路由器在处理数据包时选择最佳路径所用时间。
除此之外还有后面所讲的播放延迟。
1.3.因特网是非等时的
- 模拟的多媒体信号经过采样和模数转换变为数字信号,再组装成分组。这些分组的发送速率是恒定的(等时的)。
- 传统的因特网本身是非等时的。因此经过因特网的分组变成了非恒定速率的分组。

1.4.在接收端设置缓存
- 接收端需设置适当大小的缓存。当缓存中的分组数达到一定的数量后再以恒定速率按顺序把分组读出进行还原播放。
- 缓存实际上就是一个先进先出的队列。图中标明的 T 叫做播放时延。

1.5.缓存的影响
- 缓存使所有到达的分组都经受了迟延。
- 早到达的分组在缓存中停留的时间较长,而晚到达的分组在缓存中停留的时间则较短。
- 以非恒定速率到达的分组,经过缓存后再以恒定速率读出,就能够在一定程度上消除了时延的抖动。但我们付出的代价是增加了时延。
1.6.举例

互联网上的带宽不稳定,是波动的。由于存在拥塞控制机制,当网络出现拥塞时会降低传输速度,导致网速不恒定。但是如果我们想要看电影,就要求网速要恒定才能流畅地看电影。如果网速不恒定,当网络卡顿时,电影数据不能及时传输到用户处导致电影停止播放。
解决这个问题的方法为在用户播放器处设疑一个缓存,当媒体服务器上的电影等多媒体数据通过Internet传输到用户处时,先把这些数据放入缓存中,出现卡顿时没有数据传输过来也没关系,等网络通畅,数据到了继续按顺序放入缓存。
- 随后,用户上的播放器从缓存中均匀地读数据,保证电影按规定的恒定速率播放。这样即使有的数据一时没有传输过来也没关系,因为缓存还没有读取完,只要在播放器读取完缓存前数据能传输过来补充缓存,电影就能正常播放。
- 所以,视频流传输到用户处并不是立即播放,而是先放入缓存里排队,然后用户的视频播放软件才会从缓存里面取数据,这样就能保证速度均匀了。
在客户端设置的缓存还能弥补数据包没有按顺序到达的问题。由于存在缓存,不连续的数据包可以等待缺失的数据包到达后组成连续的数据一起被读取。
在客户端处设置一个缓存,播放时有一个等待时间称为播放时延。这样就能弥补网速不恒定的问题,缺点是增加了等待时间。这就是为什么我们在看视频的时候会有缓存条,视频文件并不会马上播放,而是先缓存再播放。
1.7.在Internet上传输音频视频需要解决的问题
- 在传送时延敏感(delay sensitive)的实时数据时,不仅传输时延不能太大,而且时延抖动也必须受到限制。
- 对于传送实时数据,很少量分组的丢失对播放效果的影响并不大(因为这是由人来进行主观评价的),因而是可以容忍的。丢失容忍(loss tolerant)也是实时数据的另一个重要特点。
- 由于分组的到达可能不按序,但将分组还原和播放时又应当是按序的。因此在发送多媒体分组时还应当给每一个分组加上序号。这表明还应当有相应的协议支持才行。
- 要使接收端能够将节目中本来就存在的正常的短时间停顿(如音乐中停顿几拍)和因某些分组的较大迟延造成的“停顿”区分开来。这就需要增加一个时间戳(timestamp),以便告诉接收端应当在什么时间播放哪个分组。
1.8.因特网提供的三种音频/视频服务
流式(streaming)存储音频/视频 ——边下载边播放。
流媒体(streaming media),即流式音频/视频。流媒体特点就是“边下载边播放” (streaming and playing) 。

如图,流媒体服务器上已经存储了视频文件,客户端只需要点播这个视频,该视频就会从流媒体服务器上传输过来。客户端一边下载一边播放,播放时还能快进倒退和本地视频一样。
这种方式的好处是:(1)节省用户硬盘空间。“边下载边播放”结束后,用户的硬盘上不会留下有关播放内容的任何痕迹。(2)除此之外,还有利于保护版权。即流媒体服务器上的视频客户端只能在线播放,不能下载和传播。其实,现在很多网站上的视频都是只能在线播放而不能下载,因为视频是加密的,这也是一种版权保护。
流式实况音频/视频 ——边录制边发送 ,即现场直播。
比如球赛的现场直播:

如图,有一摄像机在录制球赛,摄像机接在一台计算机上,计算机上安装一个编码软件,负责把录制的音频视频编码成适合不同设备的分辨率和格式。计算机再连接一个流媒体服务器,流媒体服务器接交换机或其他网络设备,交换机再连接很多的计算机。这些计算机通过网络访问流媒体服务器来观看直播,流媒体服务器上的视频源来自计算机,计算机的视频源来自摄像机,通过这样一级一级的连接实现球赛直播。
- 交互式音频/视频——实时交互式通信。比如QQ视频聊天。
Internet上的音频/视频概述的更多相关文章
- 前端笔记之HTML5&CSS3(上)新特性&音频视频&本地存储&自定义属性
一.HTML5简介 HTML 5 的第一份正式草案已于2008年1月22日公布.HTML5 仍处于完善之中.然而,大部分现代浏览器已经具备了某些 HTML5 支持. 2014年10月29日,万维网联盟 ...
- 网页上播放音频、视频Mp3,Mp4
昨天在处理网页上播放音频mp3,视频mp4上用了一天的时间来比较各种方案,最终还是选择了HTML5的 标签,谷歌浏览器.IE浏览器对标签的支持都很好,火狐上需要安装quicktime插件,效果比较差. ...
- 一起学Android之音频视频
概述 Android多媒体框架支持各种常见的媒体类型,可以很容易地将音频.视频和图像集成到App中.通过MediaPlayer Api,可以从应用程序资源(RAW).文件系统或网络上数据流资源来播放音 ...
- day10 多媒体(文字 图片 音频 视频)
1计算机表示图形的几种方式 bmp:以高质量保存 用于计算机 jpg:以良好的质量保存 用于计算机或者网络 png:以高质量保存 图片大小的计算公式:图片 ...
- 《转》iOS音频视频初级开发
代码改变世界 Posts - 73, Articles - 0, Comments - 1539 Cnblogs Dashboard Logout HOME CONTACT GALLERY RSS ...
- 第六十六节,htnl音频视频
htnl音频视频 学习要点: 1.音频和视频概述 2.video视频元素 3.audio音频元素 本章主要探讨HTML5中音频和视频元素,通过这两个原生的媒体元素向HTML页面 ...
- Jmeter工具之上传图片,上传音频文件接口
https://www.jianshu.com/p/f23f7fe20bf3 互联网时代的来临,不同手机上安装的APP,还是PC端的应用软件或多或多都会涉及到图片的上传,那么在Jmeter工具如何模拟 ...
- HTML5媒体(音频/视频)
摘要: 在HTML5出现之前,web媒体大部分通过Flash来实现.这种方式造成了文件大加载慢,影响网站性能,开发难度高,维护麻烦,不易扩展等.这就导致HTML5自己开始支持媒体功能.HTML5 DO ...
- 音频视频解决方案:GStreamer/ffmpeg/ffdshow/directshow/vfw
音频视频编程相关:GStreamer/ffmpeg/directshow/vfw linux和window下几种流行的音频视频编程框架作一个总结,防止自己迷惘,免于晕头转向. 一.GStreamer ...
随机推荐
- TPO1-3Timberline Vegetabtion on Mountain|have the advantage over
The upper timberline, like the snow line, is highest in the tropics and lowest in the Polar Regions. ...
- 解决 Win7 远程桌面 已停止工作的问题
Windows 7远程桌面登录时崩溃, 错误提示如下: 问题签名: 问题事件名称: APPCRASH 应用程序名: mstsc.exe 应用程序版本: 6.1.7601.18540 应用程序时间戳: ...
- 903C. Boxes Packing#俄罗斯套娃问题(map使用)
题目出处:http://codeforces.com/problemset/problem/903/C 题目大意:求这组数据中数据出现的最大重复次数 #include<iostream> ...
- Linux系统国内镜像站点
一,更换说明 第一步 备份 如centos, mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup ...
- 吴裕雄--天生自然C语言开发:作用域规则
#include <stdio.h> int main () { /* 局部变量声明 */ int a, b; int c; /* 实际初始化 */ a = ; b = ; c = a + ...
- flask 完成简单查询请求处理,及跨域
文章大纲 flask通用项目结构 flask 简介 主体代码逻辑 flask 跨域问题的处理 flask 日志 flask 微服务Flask-RESTful 启动服务命令 flask通用项目结构 | ...
- 如何查看Linux系统下程序运行时使用的库?
Linux系统下程序运行会实时的用到相关动态库,某些场景下,比如需要裁剪不必要的动态库时,就需要查看哪些动态库被用到了. 以运行VLC为例. VLC开始运行后,首先查看vlc的PID,比如这次查到的V ...
- 奇点云COO刘莹应邀出席《APEC SME大数据与人工智能论坛》
10月24日-25日,由亚太经合组织(APEC).韩国中小型及初创企业管理局(the Ministry of SMEs & Startups of Korea)主办的「APEC SME 大数据 ...
- C#阶段小结
一.数据类型: (一)内建类型: 整型(int ,short, long ,byte ,uint ,ushort, ulong ,sbyte): 浮点型(double float decimal): ...
- WWT在中国:一个改变了人类探索宇宙方式的少年梦想
想象一下,在宇宙中超光速飞行,访问行星.星云.恒星和小行星将是多么美妙的体验.现在,中国的孩子们已经可以坐在屋子里,仰望穹顶,去探索星球之间无穷的奥秘. 在微软研究院.微软亚洲研究院及中国科学院国家天 ...