HLS是一种基于HTTP的流媒体协议。
HLS的工作原理是将流分解为一系列小数据包。 在流会话开始时,HLS下载一个扩展名为MU的文件(如果使用UTF-编码字符编码格式,则下载mu)。 它包含一个或多个媒体文件的特定位置。 通常用于将媒体播放器指向音频和视频源。
MU文件是纯文本文件,用于指定一个或多个媒体文件的位置。
具有MU文件扩展名的文件是代表MP URL的音频播放列表文件,因此,它本身不是实际的音频文件。MU文件只指向音频(有时是视频)文件,以便媒体播放器可以将它们排队等待播放。 这些基于文本的文件可以包含媒体文件和/或文件夹的URL和/或绝对或相对路径名。UTF-编码的MU文件以MU文件格式保存。
MU文件通常不是从头开始构建的。例如,在像VLC这样的媒体播放器中,您可以使用媒体>将播放列表保存为文件… 选项将当前打开的歌曲列表保存到MU文件。
但是,如果您确实要构建自己的MU文件,则使用正确的语法非常重要。以下是MU文件的示例:
#EXTMU#EXT-X-VERSION:#EXT-X-MEDIA-SEQUENCE:#EXT-X-TARGETDURATION:#EXTINF:., .ts#EXTINF:., .ts#EXTINF:., .ts#EXTINF:., .ts#EXT-X-ENDLIST
视频正在迅速成为企业流量组合的主要组成部分。 流媒体和预先定位的视频都会对网络产生影响,从而严重影响整体性能。 了解视频数据报的结构及其在网络上的要求将有助于网络管理员实施媒体就绪网络。
可以使用几个广泛的属性来描述视频。 例如,视频可以被分类为实时或预先录制,流式传输或预定位,以及高分辨率或低分辨率。 网络负载取决于正在发送的视频类型。 预先录制的,预先定位的低分辨率视频仅仅是文件传输,而实时流视频需要高性能网络。 许多通用视频应用程序介于两者之间。 这允许非实时流视频应用程序在公共因特网上可接受地工作。 调整网络和媒体编码器是在IP网络上部署视频的重要方面。
视频编解码器在过去的年中不断发展。今天的编解码器利用增强的处理能力来更好地优化流大小。自最初的MPEG标准发布以来,一般程序没有太大变化。图片由像素矩阵组成,这些像素矩阵被分组为块。块组合成宏块。一行宏块是一个切片。切片形成图片,这些图片被组合成图片组(GOP)。
每个像素都有红色,绿色和蓝色分量。编码过程首先将RGB颜色采样为亮度和双色分量,通常称为YCrCb。在编码期间可以忽略少量的颜色信息,然后通过插值(??)替换。一旦处于YCrCb形式,每个组件都通过转换。转换是可逆的,不会压缩数据。相反,数据的表示方式不同,以允许更有效的量化和压缩。然后使用量化来舍入数据中的小细节。这种舍入用于设定质量。降低质量可以实现更好的压缩。在量化之后,通过用二进制代码替换公共比特序列来应用无损压缩。图中的每个宏块经历该过程,产生基本的比特流。该流被分成字节的分组,称为分组基本流(PES)。然后将该流加载到IP分组中。因为IP数据包具有字节MTU并且PES数据包固定为字节,所以只有个PES可以适合IP数据包。生成的IP数据包将是字节,不包括标头。因此,IP碎片不是一个问题。整个高清视频帧可能需要个IP分组来承载所有基本流分组,尽管到个分组更常见。量化和图像复杂度是确定传输所需的分组数量的主要因素。前向纠错可用于估计一些丢失的信息。但是,在许多情况下,多个IP数据包按顺序丢弃。这使得框架几乎不可能解压缩。成功发送的数据包表示浪费的带宽。 RTCP可用于请求新帧。如果没有有效的初始帧,后续帧将无法正确解码。
目前这一代视频编码有三个名称; H.,MPEG第部分和高级视频编码(AVC)。与早期的编解码器一样,H.采用空间和时间压缩。如前所述,空间压缩用于单个视频帧。这些类型的帧称为I帧。 I帧是GOP中的第一张图片。时间压缩利用了后续帧之间几乎没有信息变化的事实。虽然变焦或相机移动的变化可能导致几乎每个像素都发生变化,但变化是运动的结果。矢量用于描述此运动并应用于块。如果编码器确定一起移动的所有像素,则使用全局向量,如相机平移的情况。此外,差异信号用于微调导致的任何错误。 H.允许可变块大小,并且能够将运动编码为/像素。解码器使用该信息来确定当前帧应基于前一帧的外观。包含运动矢量和误差信号的分组称为P帧。丢失的P帧通常会导致折叠到后续帧中的伪像。如果工件随着时间的推移而持续存在,则可能的原因是丢失的P帧。
H.还实现了B帧。 这种类型的帧填充P帧之间的信息。 这意味着在可以使用信息之前,需要保持B帧直到下一个P帧到达。 B帧不用于H.的所有模式。 编码器决定哪种帧最适合。 通常存在比I帧更多的P帧。 实验室分析显示,TelePresence I帧通常为K宽(个数据包@ 字节),而P帧平均为K宽(个字节为个数据包)。
另一种类型的视频压缩是MJPEG。此编码不使用时间压缩。存在一些优点和缺点。首先,得到的视频流较大,但数据包大小在字节(有效载荷)处更加一致。量化可用于减轻增加的带宽,但代价是图像质量。 MJPEG提供的优势是每帧视频都独立于前一帧。如果丢弃来自特定帧的多个分组,则伪像不会被继续。另一个优点是可以从流中轻松提取单个帧,而无需参考I帧和先前的P&B帧。这在某些应用中很有用,例如视频监控,其中可以提取单个帧并通过电子邮件作为JPG发送。
语音和视频通常被认为是近亲。虽然它们都是实时协议(RTP)应用程序,但相似之处还是停止了。他们甚至不使用相同的编解码器来编码音频信息。语音使用G.或G.,而视频使用MP或AAC。语音通常被认为表现良好,因为每个数据包都是固定大小和固定速率。视频帧分布在作为一组传输的多个数据包上。因为一个丢失的分组可能破坏P帧,并且一个坏的P帧可能导致持久的伪像,所以视频通常具有比音频更严格的丢失要求。视频不对称。语音也可以但通常不是。即使静音,IP电话也会发送和接收相同大小的流量。视频使用单独的相机和查看器,因此无法保证对称性。在广播视频的情况下,网络上的不对称负载可能很大。管理潜在发件人可能需要网络策略。例如,如果分支正在呈现视频,则WAN聚合路由器可能正在接收比其发送的数据更多的数据。
视频将增加平均实时数据包大小,并具有快速改变网络流量配置文件的能力。如果没有计划,这可能会对网络性能产生不利影响。
发送站确定视频的分辨率,从而确定网络上的负载。这与用于显示视频的监视器的大小无关。观察视频不是估算负载的可靠方法。常见的高清格式是i,i,p等。格式的数值表示帧中的行数。高清晰度的宽高比为:,这导致列。目前正在进行p分辨率和UHDV(, x )的工作。 NHK首先通过IP网络演示了这种格式,并使用了 Mb / s的带宽。由于对高质量图像的需求,网络上的视频负载可能会随着时间的推移而增加。除了高分辨率之外,还存在大量低质量视频,这些视频通常通过HTTP或在某些情况下通过HTTPS和SSL进行隧道传输。典型分辨率包括CIF(x)和CIF(x)。这些数字被选择为x宏块的整数,分别由DCT(x)和(x)宏块使用。
分辨率对网络负载的影响通常是一个平方项。两倍大的图像需要四倍的带宽。此外,颜色采样,量化和帧速率也会影响网络流量。标准速率为每秒帧(实际为.),但这是根据交流电源的频率选择的任意值。在欧洲,模拟视频传统上是 FPS。 Cineplex电影以 FPS拍摄。随着帧速率的降低,网络负载也会降低,运动的寿命就会降低。 FPS以上的视频没有明显改善运动。最后,编码器的复杂性对视频负载有很大影响。 H.编码器在确定如何最佳地编码视频方面具有很大的灵活性,并且在确定最佳方法时会带来复杂性。例如,MPEG.允许编码器根据周围像素选择最合适的块大小。因为有效编码比解码更困难,并且因为发送方确定网络上的负载,所以低成本编码器通常需要比高端编码器更多的带宽。实时CIF视频的H.编码将驱动除了最强大的笔记本电脑之外的所有笔记本电脑,无需专用媒体处理器即可进入%的CPU范围。
MPEG使用与MPEG相同的传输。 PES由加载到IP中的字节数据报组成。视频包可以加载到RTP / UDP / IP或HTTP(S)/ TCP / IP中。
UDP上的视频可以通过电话会议或TelePresence等专用实时应用程序找到。在这种情况下,可以从接收器向发送器建立RTCP信道。这用于管理视频会话,并且是特定于实现的。 RTCP可用于向发送方请求I帧或报告功能。 UDP和RTP均提供将信道复用在一起的方法。音频和视频通常使用不同的UDP端口,但也具有唯一的RTP有效载荷类型。可以在网络上使用深度包检测(DPI)来识别存在的视频和音频的类型。注意,H.还提供了一种将视频层复用在一起的机制。这可以用于处理屏幕底部的滚动滚动条,而不发送连续的运动矢量流。
所有IP网络都存在抖动和延迟。抖动是延迟的变化。延迟通常由接口排队引起。视频解码器可以使用播出缓冲器来平滑网络中发现的抖动。这个缓冲区的深度有限制。如果它太小,则会导致掉落。如果它太深,则视频将被延迟,这可能是实时应用(例如TelePresence)中的问题。另一个限制是处理经常伴随深度播放缓冲区的丢弃数据包。如果使用RTCP请求新的I帧,则在重新同步时将跳过更多帧。结果是丢弃的数据包对视频降级的影响稍大,如果之前发现了丢失的数据包,则会产生影响。大多数编解码器采用动态播放缓冲区。
如果你对音视频开发感兴趣,觉得文章对您有帮助,别忘了点赞、收藏哦!或者对本文的一些阐述有自己的看法,有任何问题,欢迎在下方评论区与我讨论!