HLS (HTTP Live Streaming)

HLS是一种基于HTTP的流媒体协议。

HLS的工作原理

HLS的工作原理是将流分解为一系列小数据包。 在流会话开始时,HLS下载一个扩展名为M3U的文件(如果使用UTF-8编码字符编码格式,则下载m3u8)。 它包含一个或多个媒体文件的特定位置。 通常用于将媒体播放器指向音频和视频源。

M3U文件是纯文本文件,用于指定一个或多个媒体文件的位置。

具有M3U文件扩展名的文件是代表MP3 URL的音频播放列表文件,因此,它本身不是实际的音频文件。M3U文件只指向音频(有时是视频)文件,以便媒体播放器可以将它们排队等待播放。 这些基于文本的文件可以包含媒体文件和/或文件夹的URL和/或绝对或相对路径名。UTF-8编码的M3U文件以M3U8文件格式保存。

如何构建M3U文件

M3U文件通常不是从头开始构建的。例如,在像VLC这样的媒体播放器中,您可以使用媒体>将播放列表保存为文件… 选项将当前打开的歌曲列表保存到M3U文件。

但是,如果您确实要构建自己的M3U文件,则使用正确的语法非常重要。以下是M3U文件的示例:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:00015
#EXTINF:6.000,
31972.ts
#EXTINF:10.000,
31973.ts
#EXTINF:6.000,
31974.ts
#EXTINF:10.000,
31975.ts
#EXT-X-ENDLIST

HLS使用HTTP进行传输

数字视频的基础知识

视频正在迅速成为企业流量组合的主要组成部分。 流媒体和预先定位的视频都会对网络产生影响,从而严重影响整体性能。 了解视频数据报的结构及其在网络上的要求将有助于网络管理员实施媒体就绪网络。

不同类型的视频

可以使用几个广泛的属性来描述视频。 例如,视频可以被分类为实时或预先录制,流式传输或预定位,以及高分辨率或低分辨率。 网络负载取决于正在发送的视频类型。 预先录制的,预先定位的低分辨率视频仅仅是文件传输,而实时流视频需要高性能网络。 许多通用视频应用程序介于两者之间。 这允许非实时流视频应用程序在公共因特网上可接受地工作。 调整网络和媒体编码器是在IP网络上部署视频的重要方面。

H.264编码和解码的含义

视频编解码器在过去的15年中不断发展。今天的编解码器利用增强的处理能力来更好地优化流大小。自最初的MPEG1标准发布以来,一般程序没有太大变化。图片由像素矩阵组成,这些像素矩阵被分组为块。块组合成宏块。一行宏块是一个切片。切片形成图片,这些图片被组合成图片组(GOP)。

每个像素都有红色,绿色和蓝色分量。编码过程首先将RGB颜色采样为亮度和双色分量,通常称为YCrCb。在编码期间可以忽略少量的颜色信息,然后通过插值(??)替换。一旦处于YCrCb形式,每个组件都通过转换。转换是可逆的,不会压缩数据。相反,数据的表示方式不同,以允许更有效的量化和压缩。然后使用量化来舍入数据中的小细节。这种舍入用于设定质量。降低质量可以实现更好的压缩。在量化之后,通过用二进制代码替换公共比特序列来应用无损压缩。图中的每个宏块经历该过程,产生基本的比特流。该流被分成188字节的分组,称为分组基本流(PES)。然后将该流加载到IP分组中。因为IP数据包具有1500字节MTU并且PES数据包固定为188字节,所以只有7个PES可以适合IP数据包。生成的IP数据包将是1316字节,不包括标头。因此,IP碎片不是一个问题。整个高清视频帧可能需要100个IP分组来承载所有基本流分组,尽管45到65个分组更常见。量化和图像复杂度是确定传输所需的分组数量的主要因素。前向纠错可用于估计一些丢失的信息。但是,在许多情况下,多个IP数据包按顺序丢弃。这使得框架几乎不可能解压缩。成功发送的数据包表示浪费的带宽。 RTCP可用于请求新帧。如果没有有效的初始帧,后续帧将无法正确解码。

帧类型

目前这一代视频编码有三个名称; H.264,MPEG4第10部分和高级视频编码(AVC)。与早期的编解码器一样,H.264采用空间和时间压缩。如前所述,空间压缩用于单个视频帧。这些类型的帧称为I帧。 I帧是GOP中的第一张图片。时间压缩利用了后续帧之间几乎没有信息变化的事实。虽然变焦或相机移动的变化可能导致几乎每个像素都发生变化,但变化是运动的结果。矢量用于描述此运动并应用于块。如果编码器确定一起移动的所有像素,则使用全局向量,如相机平移的情况。此外,差异信号用于微调导致的任何错误。 H.264允许可变块大小,并且能够将运动编码为1/4像素。解码器使用该信息来确定当前帧应基于前一帧的外观。包含运动矢量和误差信号的分组称为P帧。丢失的P帧通常会导致折叠到后续帧中的伪像。如果工件随着时间的推移而持续存在,则可能的原因是丢失的P帧。

H.264还实现了B帧。 这种类型的帧填充P帧之间的信息。 这意味着在可以使用信息之前,需要保持B帧直到下一个P帧到达。 B帧不用于H.264的所有模式。 编码器决定哪种帧最适合。 通常存在比I帧更多的P帧。 实验室分析显示,TelePresence I帧通常为64K宽(50个数据包@ 1316字节),而P帧平均为8K宽(900个字节为9个数据包)。

动态JPEG(MJPEG)

另一种类型的视频压缩是MJPEG。此编码不使用时间压缩。存在一些优点和缺点。首先,得到的视频流较大,但数据包大小在1316字节(有效载荷)处更加一致。量化可用于减轻增加的带宽,但代价是图像质量。 MJPEG提供的优势是每帧视频都独立于前一帧。如果丢弃来自特定帧的多个分组,则伪像不会被继续。另一个优点是可以从流中轻松提取单个帧,而无需参考I帧和先前的P&B帧。这在某些应用中很有用,例如视频监控,其中可以提取单个帧并通过电子邮件作为JPG发送。

语音与视频

语音和视频通常被认为是近亲。虽然它们都是实时协议(RTP)应用程序,但相似之处还是停止了。他们甚至不使用相同的编解码器来编码音频信息。语音使用G.711或G.729,而视频使用MP3或AAC。语音通常被认为表现良好,因为每个数据包都是固定大小和固定速率。视频帧分布在作为一组传输的多个数据包上。因为一个丢失的分组可能破坏P帧,并且一个坏的P帧可能导致持久的伪像,所以视频通常具有比音频更严格的丢失要求。视频不对称。语音也可以但通常不是。即使静音,IP电话也会发送和接收相同大小的流量。视频使用单独的相机和查看器,因此无法保证对称性。在广播视频的情况下,网络上的不对称负载可能很大。管理潜在发件人可能需要网络策略。例如,如果分支正在呈现视频,则WAN聚合路由器可能正在接收比其发送的数据更多的数据。

视频将增加平均实时数据包大小,并具有快速改变网络流量配置文件的能力。如果没有计划,这可能会对网络性能产生不利影响。

解析度

发送站确定视频的分辨率,从而确定网络上的负载。这与用于显示视频的监视器的大小无关。观察视频不是估算负载的可靠方法。常见的高清格式是720i,1080i,1080p等。格式的数值表示帧中的行数。高清晰度的宽高比为16:9,这导致1920列。目前正在进行2160p分辨率和UHDV(7,680 x 4320)的工作。 NHK首先通过IP网络演示了这种格式,并使用了600 Mb / s的带宽。由于对高质量图像的需求,网络上的视频负载可能会随着时间的推移而增加。除了高分辨率之外,还存在大量低质量视频,这些视频通常通过HTTP或在某些情况下通过HTTPS和SSL进行隧道传输。典型分辨率包括CIF(352x288)和4CIF(704x576)。这些数字被选择为16x16宏块的整数,分别由DCT(22x18)和(44x36)宏块使用。

格式 分辨率 示例带宽
QCIF (1/4 CIF) 176x144 260K
CIF 352x288 512K
4CIF 704x576 1 Mb/s
SD NTSC 720x480 Analog, 4.2Mhz
720 HD 1280x720 1-8 mb/s
1080 HD 1080x1920 5-8 mb/s h.264
12+ mb/s mpg2
CUPC 640x480 max
YouTube 320x240 Flash(H.264)
Skype Camera limits 128 - 512K+

网络负载

分辨率对网络负载的影响通常是一个平方项。两倍大的图像需要四倍的带宽。此外,颜色采样,量化和帧速率也会影响网络流量。标准速率为每秒30帧(实际为29.97),但这是根据交流电源的频率选择的任意值。在欧洲,模拟视频传统上是25 FPS。 Cineplex电影以24 FPS拍摄。随着帧速率的降低,网络负载也会降低,运动的寿命就会降低。 24 FPS以上的视频没有明显改善运动。最后,编码器的复杂性对视频负载有很大影响。 H.264编码器在确定如何最佳地编码视频方面具有很大的灵活性,并且在确定最佳方法时会带来复杂性。例如,MPEG4.10允许编码器根据周围像素选择最合适的块大小。因为有效编码比解码更困难,并且因为发送方确定网络上的负载,所以低成本编码器通常需要比高端编码器更多的带宽。实时CIF视频的H.264编码将驱动除了最强大的笔记本电脑之外的所有笔记本电脑,无需专用媒体处理器即可进入90%的CPU范围。

运输

MPEG4使用与MPEG2相同的传输。 PES由加载到IP中的188字节数据报组成。视频包可以加载到RTP / UDP / IP或HTTP(S)/ TCP / IP中。

UDP上的视频可以通过电话会议或TelePresence等专用实时应用程序找到。在这种情况下,可以从接收器向发送器建立RTCP信道。这用于管理视频会话,并且是特定于实现的。 RTCP可用于向发送方请求I帧或报告功能。 UDP和RTP均提供将信道复用在一起的方法。音频和视频通常使用不同的UDP端口,但也具有唯一的RTP有效载荷类型。可以在网络上使用深度包检测(DPI)来识别存在的视频和音频的类型。注意,H.264还提供了一种将视频层复用在一起的机制。这可以用于处理屏幕底部的滚动滚动条,而不发送连续的运动矢量流。

缓冲

所有IP网络都存在抖动和延迟。抖动是延迟的变化。延迟通常由接口排队引起。视频解码器可以使用播出缓冲器来平滑网络中发现的抖动。这个缓冲区的深度有限制。如果它太小,则会导致掉落。如果它太深,则视频将被延迟,这可能是实时应用(例如TelePresence)中的问题。另一个限制是处理经常伴随深度播放缓冲区的丢弃数据包。如果使用RTCP请求新的I帧,则在重新同步时将跳过更多帧。结果是丢弃的数据包对视频降级的影响稍大,如果之前发现了丢失的数据包,则会产生影响。大多数编解码器采用动态播放缓冲区。

获取更多信息

安防流媒体互联直播-QQ交流群:615081503

国标GB28181无插件LiveGBS-QQ交流群:947137753

邮件:support@liveqing.com

WEB:www.liveqing.com

Tel:189-5515-0114 (同微信)

Copyright © LiveQing.com 2016-2019

理解HLS流及数字视频的基础知识相关推荐

  1. 视频格式基础知识 让你了解MKV MP4 H 265 码率\码流 多码流等等

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51784440   文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一 ...

  2. 音视频知多少(1)声音与视频的基础知识

    前言 最近新加入的公司在嵌入式音视频方面算是全国领先水平,因而在完成自己本职的工作的时候有必要在这一方面做一系列的提升,以跟上其他同事的世界,不光光只支持BSP的能力,在我看来也是需要将视频流作为自己 ...

  3. 视频测试基础知识--视频算法DMOS和PPSNR--视频参考与无参考测试介绍

    视频测试基础知识--视频算法DMOS--视频参考与无参考测试介绍 测试则从传统的静态.单帧像分析,转换为动态测试.图像质量分析. 虽然单帧像分析可提供信号定时.色深.线条同步化,以及更多有用信息,但压 ...

  4. 数字系统设计的基础知识

    不论是学习Verilog HDL,还是学习数字系统设计,本文的知识都是必要的. 数字系统的基础知识 进制 二进制 编码 布尔代数 布尔表达式 组合逻辑电路 时序逻辑电路 时序机 功能器件 存储器件 逻 ...

  5. ffmpeg调整缩放裁剪视频的基础知识(转)

    源网址:ffmpeg调整缩放裁剪视频的基础知识 - yongfengnice - 博客园 1. resize and scale video 调整视频的大小和尺寸 1-1.调整视频大小(resize) ...

  6. 音视频开发基础知识到进阶剖析

    全网最强音视频开发教学--音视频开发基础知识到进阶剖析 1.要掌握多深的原理才能开始做项目 2.音视频基础有哪些必须掌握的 3.进阶需要学习什么项目 视频讲解如下,点击观看: 全网最强音视频开发--音 ...

  7. 音视频处理基础知识扫盲:数字视频YUV像素表示法以及视频帧和编解码概念介绍

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...

  8. 5G时代来临,前端开发工程师必须了解的音视频入门基础知识

    1. 音视频基础 本文将给大家进行音视频基础的常规知识点的梳理.当然,短短的一篇文章并不能让大家立即变成音视频领域的专家,但这些知识点已经基本涵盖了音视频的入门知识.我们将按照下面的内容给大家 音视频 ...

  9. (零)音视频技术基础知识,现实项目

    前言 耽误了很久,一直想写音视频开发的教程,一方面,音视频的发展正在向各个行业扩展,从教育的远程授课,交通的人脸识别,医疗的远程就医等,音视频方向已经占据一个相当重要的位置,而音视频真正入门的文章又少 ...

最新文章

  1. 软件架构是软件的组织形式
  2. 滴滴算法大赛算法解决过程(实时更新)
  3. opencv精要(4)-fedora下的opencv安装及测试,codelite配置
  4. 简述ospf的工作原理_简述洛氏硬度计的工作原理及应用领域
  5. IT行业 侃侃富士康
  6. 那些炫酷的特效--QQ空间+VUE
  7. 指针应用时的注意事项
  8. linux学习笔记-日常运维
  9. Web Worker——js的多线程,实现统计博客园总阅读量
  10. 充分统计量(Sufficient Statistics)
  11. 认识以及安装redis
  12. 捷联惯导更新算法及误差分析汇总
  13. 用C语言读取txt文件并统计字符数
  14. python生成随机的大写字母_Python — 随机生成10个大写、小写字母、特殊字符 string模块...
  15. GBK转UTF8汉字数量为奇数位时,多出来的末尾汉字会乱码
  16. 玉米社:竞价推广关键词出价原则,注意这几点!
  17. ACC自适应巡航控制系统介绍
  18. 1990-2021年汇率年平均价数据
  19. 移动硬盘加密软件TrueCrypt使用指南
  20. 2020年黑马python视频教程5.0新版课程_黑马Python就业班5.0-最新2020人工智能

热门文章

  1. C++判断字符串是否相等
  2. 能在家里赚钱的工作有哪些?适合普通人的兼职项目
  3. 通话耳机怎么挑选、2022值得入手的六款蓝牙耳机排名
  4. 再也不怕女朋友问我二分查找了!【手绘漫画】图解二分查找(修订版)(LeetCode 704题)
  5. Window10 双击bat文件,提示“windows找不到文件xxx.bat”
  6. 家乡的春节html,家乡的春节(Spring Festival in my hometown)英语作文
  7. 数据结构——堆(带图详解)
  8. 电竞真无线悦自由,HyperX极度未知云雀TWS电竞游戏真无线耳机
  9. 133 行代码实现质感地形
  10. python socket通信 recv 丢包_用clumsy模拟丢包测试socket库的失败重传