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上的音频/视频概述的更多相关文章

  1. 前端笔记之HTML5&CSS3(上)新特性&音频视频&本地存储&自定义属性

    一.HTML5简介 HTML 5 的第一份正式草案已于2008年1月22日公布.HTML5 仍处于完善之中.然而,大部分现代浏览器已经具备了某些 HTML5 支持. 2014年10月29日,万维网联盟 ...

  2. 网页上播放音频、视频Mp3,Mp4

    昨天在处理网页上播放音频mp3,视频mp4上用了一天的时间来比较各种方案,最终还是选择了HTML5的 标签,谷歌浏览器.IE浏览器对标签的支持都很好,火狐上需要安装quicktime插件,效果比较差. ...

  3. 一起学Android之音频视频

    概述 Android多媒体框架支持各种常见的媒体类型,可以很容易地将音频.视频和图像集成到App中.通过MediaPlayer Api,可以从应用程序资源(RAW).文件系统或网络上数据流资源来播放音 ...

  4. day10 多媒体(文字 图片 音频 视频)

    1计算机表示图形的几种方式     bmp:以高质量保存     用于计算机     jpg:以良好的质量保存    用于计算机或者网络     png:以高质量保存     图片大小的计算公式:图片 ...

  5. 《转》iOS音频视频初级开发

    代码改变世界 Posts - 73, Articles - 0, Comments - 1539 Cnblogs Dashboard Logout HOME CONTACT GALLERY RSS   ...

  6. 第六十六节,htnl音频视频

    htnl音频视频 学习要点:     1.音频和视频概述     2.video视频元素     3.audio音频元素 本章主要探讨HTML5中音频和视频元素,通过这两个原生的媒体元素向HTML页面 ...

  7. Jmeter工具之上传图片,上传音频文件接口

    https://www.jianshu.com/p/f23f7fe20bf3 互联网时代的来临,不同手机上安装的APP,还是PC端的应用软件或多或多都会涉及到图片的上传,那么在Jmeter工具如何模拟 ...

  8. HTML5媒体(音频/视频)

    摘要: 在HTML5出现之前,web媒体大部分通过Flash来实现.这种方式造成了文件大加载慢,影响网站性能,开发难度高,维护麻烦,不易扩展等.这就导致HTML5自己开始支持媒体功能.HTML5 DO ...

  9. 音频视频解决方案:GStreamer/ffmpeg/ffdshow/directshow/vfw

    音频视频编程相关:GStreamer/ffmpeg/directshow/vfw linux和window下几种流行的音频视频编程框架作一个总结,防止自己迷惘,免于晕头转向. 一.GStreamer ...

随机推荐

  1. Qt QPixmap QImage 图片等比例缩放到指定大小

    QPixmap pixmap(path); //pixmap=QPixmap::fromImage(imgShow); pixmap = pixmap.scaled(, , Qt::KeepAspec ...

  2. StatusBar时间状态栏

    StatusBar:

  3. ios 接入微信开发 新版

    首先在服务器所在域名(https://www.test.com)根目录创建apple-app-site-association文件 { "applinks": { "ap ...

  4. Linux从一台linux机器复制文件到另一台linux机器

    1.功能说明 scp 用于将文件/目录从一台linux系统复制到另一台linux系统.传输协议为SSH协议,保证了传输数据的安全性 其格式如下: (1)scp  本地linux系统文件路径   远程用 ...

  5. hibernate中session.flush()

    flush()session flush在commit之前默认都会执行, 也可以手动执行,他主要做了两件事: 1) 清理缓存. 2) 执行SQL. flush: Session 按照缓存中对象属性变化 ...

  6. 安卓ButtomBar实现方法

    这里ButtomBar有3个items,分别有icon和文字,在当前fragment时,所属的icon和文字会显示不同颜色. 1. 首先要准好ICON素材,命名规范要清楚. 2. 实现这个Buttom ...

  7. FactoryBean 和 BeanFactory

    大佬勿喷,如果有什么地方理解错了欢迎吐槽 一 .BeanFacory 首先来看看下边的代码 package com.lhf.beanfactory; public class SingleBean { ...

  8. 109)PHP与oracle网址

    https://pecl.php.net/package/oci8/2.1.8/windowshttps://www.toadworld.com/platforms/oracle/w/wiki/116 ...

  9. 【学习笔记】 Johnson 全源最短路

    前置扯淡 一年多前学的最短路,当时就会了几个名词的拼写,啥也没想过 几个月之前,听说了"全源最短路"这个东西,当时也没说学一下,现在补一下(感觉实在是没啥用) 介绍 由于\(spf ...

  10. hdu1069 Monkey and Banana LIS

    #include<cstdio> #include<iostream> #include<algorithm> #include<queue> #inc ...