播放器会不会上传本地视频(?视频播放器的数据传输方案有哪些)

互联网上有许多音乐和视频网站,当用户点击一部电影时,浏览器开始执行动作,首先向该电影的链接服务器发送一个 HTTP 请求。

然后,服务器从磁盘获取这部电影,它是一个 MP4 或其他格式的文件,会把文件发送回浏览器。浏览器启动媒体播放器,并将文件传输给播放器,最后播放器开始读取文件并播放这部电影。

在原则上,这种方法能够播放影片,但它没有考虑到网络问题,由于下载电影只是一次简单的下载,用户必须在播放电影之前等待整个电影通过网络传输完成,这可能需要数小时。

因此,这种模式会引发一些新问题,对于音频也是如此,即使是一个大小为 4MB 的 MP3 歌曲,如果宽带连接速度只有 1Mbps,用户也会面临短暂的等待时间,才能开始试听。

媒体播放器

为了避免这个问题,浏览器提出了新的解决方案:网页链接到的电影文件并非实际的源文件,而是一个非常简短的文件,仅包含电影的路径、名称,一个简单的源文件可能只有一行,看起来像这样:

rtsp://joes-movie-server/movie-0025.mp4

浏览器像往常一样获取页面,但现在只有一行文本。

然后,它启动媒体播放器并将这行文本传递给播放器。接着,播放器连接到媒体服务器,并请求这部电影,电影数据被流式传输回播放器进行播放。

播放器会不会上传本地视频(?视频播放器的数据传输方案有哪些)

这种方法的优点在于媒体播放器能够快速启动,仅需在非常短的源文件下载后就可以开始播放。一旦启动,就可以在整个文件下载完成之前开始播放电影。
通常,源文件服务器和媒体服务器是两个不同的服务器。源文件服务器专门用于存储源文件,而媒体服务器则使用实时流协议(RTSP,Real Time Streaming Protocol)来传输内容。
媒体播放器主要任务
用户界面
大多数媒体播放器都配备了用户界面,还有各种按钮、调节滑块和可视窗口。通常,播放器的面板可以根据需要自由替换成其他样式。
数据纠错
前向纠错(FEC,Forward Error Correction)是一种简单的应用程序级纠错编码技术。
在这种方法中,服务器每次发送 4 个数据包(A、B、C、D),同时还生成一个校验包 E。因此,每次发送的数据包组合包括5个包,其中包含了一个校验包。
校验包 P 包含了冗余信息,它是通过对前 4 个数据包中每个数据位进行奇偶校验异或操作来生成的。

播放器会不会上传本地视频(?视频播放器的数据传输方案有哪些)

我们希望 5 个包都能够成功到达客户端,这样我们就可以直接丢弃第 5 个校验包。如果中途丢失了任何一个数据包,我们可以通过校验包 P 来恢复丢失的数据。然而,如果一组数据中丢失了两个或更多包,那么无论如何都无法通过校验包来恢复丢失的数据。

交错编码(interleaving)一种在传输之前对媒体数据进行重新排列的技术。

通过交错编码,数据的顺序被混合起来,然后在接收端再次解开交错的数据。这样,即使一个数据包丢失,由于发送前的数据分布已经被重新排列,丢失的损失会分散到多个数据包中,不会导致在播放时出现明显的间断。

举例来说,假设我们对每隔 10 毫秒的采样数据进行交错编码,将所有「偶数」采样放入一个数据包中,并将所有「奇数」采样放入下一个数据包中。如果现在丢失了 3 个数据包,这并不意味着丢失了 10 毫秒的音频,而只是丢失了每个 10 毫秒内的其他采样值。

媒体播放器可以轻松处理这种损失,通过在丢失位置交叉插入前后的样本值来弥补。

因此,即使是 10 毫秒的音频也具有较低的临时分辨率,并且不会产生明显的媒体缺失。

交错编码是一种非常吸引人的技术,它不需要额外的带宽,但会增加传输延迟,因为需要等待一组数据包都到达后才能解码。

不过,对于音频来说,播放期间的短暂间隙可以通过接近的声音来掩盖,除非用户非常专注,否则他们很难察觉到这种替换。

解压缩内容

在许多解压缩方案中,后续的数据必须等待较早的数据被解压缩出来之后才能解压缩,因为后续的数据是相对于之前数据的编码。

基于 UDP 传输协议可能会出现数据丢失的情况,因此在编码过程中必须设计成无论是否丢失数据都能进行解码。

这就是 MPEG 采用 I帧、P帧、B帧的原因之一,每个 I帧都可以独立于其他帧进行解码,以便从任何先前帧的丢失中恢复。

消除抖动

系统在启动播放器前会进行 5-10 秒缓冲,媒体播放器会定期从缓冲区中排出媒体数据,以确保音频和视频播放流畅,这种延迟为缓冲区一个机会来填补至「低水位标记」,以避免缓冲区完全排空。

缓存数据应该有规律,并且到达足够多,使得缓冲区永远不会被完全排空,如果缓冲区被排空那么媒体播放器不得不卡住,缓冲区的价值在于如果有时由于网络拥塞,导致数据到达地很慢,那么缓冲区的媒体保持播放器的正常播放,直到有新媒体到达,缓冲区才被补充填满。

需要多大的缓冲区,媒体服务器要以多快的速率发送媒体才能填满缓冲区,这些决策都取决于网络协议,有非常多的可能性。

媒体播放器和媒体服务器都愿意提前处理媒体数据,也就是说它们愿意缓冲大量的数据。

然而,为了优化网络使用,媒体播放器不能一直接收数据,因此需要定义缓冲区「高水位标记」。

基本原则是服务器不断地输出数据,直到缓冲区被填满高水位标记,然后媒体播放器告诉服务器暂停发送,服务器停止以后,缓冲区将开始排除, 当它降低到低水位标记的时候,播放器告诉服务器重新发送。

低水位标记必须考虑网络的带宽延迟,来启动和停止媒体流播放器,这就是 RTSP 协议所提供的功能,它给播放器提供了控制服务器的机制,除了启动和停止媒体流之外,它还可以后退和前进到某个位置,播放特定时间以及快进、快退,它不提供数据流传输,不过这通常是由 UDP 之上的 RTP 或者是基于 TCP 的 HTTP 之上的 RTP 的任务。

TCP 的优势

关于缓冲区大小和媒体服务器发送速率的决定,确实取决于所选择的网络协议,而且有很多可能性。选择基于 UDP 还是 TCP 协议是设计中需要考虑的最重要因素之一。

尽管 TCP 看起来似乎不太适合实时流媒体传输,但实际上它仍然经常被采用。

最主要的原因是 TCP 更容易穿透防火墙,大多数管理员将防火墙配置成保护他们的网络不受未经授权的访问,他们通常会允许来自远程端口 80 的 TCP 连接,以便 HTTP 和其他外部流量通过。

另一个使用 TCP 的优点是,它提供给客户端的媒体是一个完整的副本,这使得用户可以轻松地倒回到播放的某个点,而不必担心数据丢失。

随着媒体存储空间变得越来越便宜,媒体播放器可以在用户观看的同时下载媒体。一旦下载完成,用户就可以无间断地观看,即使他失去了网络连接也没有关系。


内容优化:ChatGPT
图片来源:Pixabay
内容来源:《计算机网络》

原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34463.html

(0)
小道研究's avatar小道研究
上一篇 2024年4月12日 下午5:32
下一篇 2024年4月12日 下午5:34

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注