视频相关概念
来源:互联网 发布:sql loop循环 编辑:程序博客网 时间:2024/05/16 04:15
一、视频文件格式
对于视频来说,常见的文件格式有:.mov,.avi,.mpg,.vob,.mkv, .rm,.rmvb等等,文件格式通常表现为文件在操作系统上存储时的后缀名,他通常会被操作系统用来和相应的打开程序关联,比如你双击一个test.doc文件,系统会调用word去打开它,你双击一个test.avi或者test.mkv 系统会调用视频播放器去打开它。
同样是视频,为什么会有.mov,.avi,.mpg等等这么多种文件格式呢?那是因为他们通过不同的方式实现了视频这件事情,至于这个不同在哪里,那就需要了解一下接下来要说的(视频封装格式)这个概念了。
二、视频封装格式
视频封装格式,简称视频格式,相当于一种储存视频信息的容器,它里面包含了封装视频文件所需要的视频信息、音频信息和相关的配置信息(比如:视频和音频的关联信息、如何解码等等)。一种视频封装格式的直接反映就是对应着相关的视频文件格式。
下面,我们列举一些文件封装格式:
AVI格式
对应的文件格式为.avi,英文全称为Audio Video Interleaved,是由Microsoft公司于1992年推出,这种视频格式的优点是图像的质量好,无损AVI可以保存alpha通道,缺点是体积过于庞大,并且压缩标准不统一,存在较多的高低版本兼容问题。
DV-AVI 格式
对应的文件格式为.avi,英文全称为Digital Video Format,是由索尼、松下、JVC等多家厂商联合提出的一种家用数字视频格式。常见的数码摄像机就是使用这种格式记录视频数据的,他可以通过电脑的IEEE 1394端口传输视频数据到电脑,也可以将电脑中编辑好的视频数据回录到数码摄像机中。
WMV格式
对应的文件格式是.wmv、.asf,英文全称为Window Media Video,是微软推出的一种采用独立编码方式并且尅直接在网上实时观看视频节目的文件压缩格式,在同等视频质量下,WMV格式的文件可以边下载边播放,因此很适合在网上播放和传输。
MPEG格式
对应的文件格式有.mpg
、.mpeg
、.mpe
、.
、.vob
、.asf
、.3gp
、.mp4
等等,英文全称为Moving Picture Experts Group,是由运动图像专家组制定的视频格式,该专家组于1988年组建,专门负责视频和音频标准制定、其成员都是视频、音频以及系统领域的技术专家。MPEG格式目前有三个压缩标准,分别是MPEG-1、MPEG-2、和MPEG-4。MPEG-4是现在用的比较多的视频封装格式,它为了播放流式媒体的高质量视频而专门设计的,以求使用最少的数据获得最佳的图像质量。
Matroska 格式
对应的文件格式是 .mkv
,Matroska 是一种新的视频封装格式,它可将不同编码的视频以及16条以上不同格式的音频和不同语言的字幕流封 装到 一个Matroska Media文件当中。
Real Video 格式
对应的文件格式是 .rm
、.rmvb
,是Real Networks公司所制定的音频视频压缩规范称为Real Media 。用户可以使用RealPlayer 根据不用的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。
QuickTime File Format格式
对应的文件格式是 .mov
,是Apple公司开发的一种视频格式,默认的播放器是苹果的QuickTime,这种封装格式具有较高的压缩比率和较完美的视频清晰度等特点,并可以保存alpha通道。
Flash Video 格式
对应的文件格式是 .flv
,是由 Adobe Flash 延伸出来的一种网络视频封装格式。这种格式被很多视频网站所采用。
从上面介绍中,我们大概对视频文件格式以及对应的视频封装方式有了一个概念,接下来则需要了解一下关于视频更本质的东西,那就是视频编解码
三、视频编解码方式
1. 视频编解码的过程是指对数字视频进行压缩或解压缩的一个过程。
在做视频编解码时,需要考虑以下这些因素的平衡:视频的质量、用来表示视频所需要的数据量(通常称之为码率)、编码算法和解码算法的复杂度、针对数据丢失和错误的鲁棒性(Robustness)、编辑的方便性、随机访问、编码算法设计的完美性、端到端的延时以及其他一些因素。
2. 常见的视频编码方式有:
(1)H.26X系列。由国际电传视讯联盟远程通信标准化组织(ITU-T)主导、包括H.261
、H.262
、H.263
、H.264
、H
A. H.261
,主要用于老的视频会议和视频电话系统。是第一个使用数字视频压缩标准。实质上,之后的所有的标准视频编解码器都是基于它设计的。
B. H.262
,等同于MPEG-2 第二部分,使用在DVD、SVCD和大多数数字视频广播系统和有限分布系统中。
C.H.263
,主要用于视频会议、视频电话和网络视频相关产品。在对逐行扫描的视频源进行压缩的方面,H.263比它之前的视频编码标准在性能上有了较大的提升。尤其是低码率端,它可以在保证一定质量的前提下大大的节约码率。
D. H.264等同于MPEG-4第十部分,也被称为高级视频编码(Advanced Video Coding,简称AVC),是一种食品压缩标准,一种被广泛使用的高精度视频的录制、压缩和发布格式。该标准引入了一系列新的能够大大提高压缩性能的技术,并能够同时在高码率端大大超越以前的诸标准。
E. H.265 被称为高效率视频编码(High Efficiency Video Coding,简称HEVC)是一种视频压缩标准,是H.264的继任者, HEVC被认为不仅提升图像质量,同时也能达到H.264两倍的有压缩率(等同于同样画面质量下比特率减少了50%),可支持4K分辨率甚至到超高画质电视,最高分辨率可达到8192*4320(8K分辨率),这是目前发展的趋势。
(2)MPEG系列
由国际标准组织机构(ISO)下属的运动图像专家组(MPEG)开发。
A. MPEG-1 第二部分,主要使用在VCD上,有些在线视频也使用这种格式,该编解码器的质量大致上和原有的VHS录像带相当。
B. MPEG-2 第二部分,等同于H.262,使用在DVD、SVCD和大多数数字视频广播系统和有线分布系统中。
C. MPEG-4 第二部分,可以使用在网络传输、广播和媒体存储上。比起MPEG-2第二部分和第一版的H.263,它的压缩性能有所提高。
D. MPEG-4 第十部分,等同于H.264,是这两个编码组织合作单身狗的标准。
其他,AMV、AVS、Bink、CineForm等等,这里就不做多的介绍了。
介绍了上面这些「视频编解码方式」后,test.mov
时,.mov
,QuickTime File Format
,但是无法知道它的「视频编解码方式」。
音频编解码方式
视频中除了画面通常还有声音,所以这就涉及到音频编解码。
- AAC,英文全称 Advanced Audio Coding,是由 Fraunhofer IIS、杜比实验室、AT&T、Sony等公司共同开发,在 1997 年推出的基于 MPEG-2 的音频编码技术。2000 年,MPEG-4 标准出现后,AAC 重新集成了其特性,加入了 SBR 技术和 PS 技术,为了区别于传统的 MPEG-2 AAC 又称为 MPEG-4 AAC。
- MP3,英文全称 MPEG-1 or MPEG-2 Audio Layer III,是当曾经非常流行的一种数字音频编码和有损压缩格式,
它被设计来大幅降低音频数据量。它是在 1991 年,由位于德国埃尔朗根的研究组织 Fraunhofer-Gesellschaft 的一组工程师发明和标准化的。MP3 的普及,曾对音乐产业造成极大的冲击与影响。 - WMA,英文全称 Windows Media Audio,由微软公司开发的一种数字音频压缩格式,
本身包括有损和无损压缩格式。
关于 H.264
概念
H.264 是现在广泛采用的一种编码方式。关于 H.264 相关的概念,从大到小排序依次是:序列、图像、片组、片、
我们先来解释几个概念:
- 图像。H.264 中,「图像」是个集合的概念,帧、顶场、底场都可以称为图像。
一帧通常就是一幅完整的图像。当采集视频信号时, 如果采用逐行扫描,则每次扫描得到的信号就是一副图像, 也就是一帧。当采集视频信号时,如果采用隔行扫描(奇、偶数行) ,则扫描下来的一帧图像就被分为了两个部分,这每一部分就称为「 场」,根据次序分为:「顶场」和「底场」。「帧」和「场」 的概念又带来了不同的编码方式:帧编码、场编码。 逐行扫描适合于运动图像,所以对于运动图像采用帧编码更好; 隔行扫描适合于非运动图像,所以对于非运动图像采用场编码更好。
片(Slice),每一帧图像可以分为多个片。
网络提取层单元(NALU, Network Abstraction Layer Unit),NALU 是用来将编码的数据进行打包的,一个分片(Slice)
可以编码到一个 NALU 单元。不过一个 NALU 单元中除了容纳分片(Slice)编码的码流外, 还可以容纳其他数据,比如序列参数集 SPS。对于客户端其主要任务则是接收数据包,从数据包中解析出 NALU 单元,然后进行解码播放。 宏块(Macroblock),分片是由宏块组成。
颜色模型
我们听过最多的颜色模型应该就是经典的 RGB 模型了。
在 RGB 模型中每种颜色需要 3 个数字,分别表示 R、G、B,比如 (255, 0, 0) 表示红色,通常一个数字占用 1 字节,那么表示一种颜色需要 24 bits。那么有没有更高效的颜色模型能够用更少的 bit 来表示颜色呢?
现在我们假设我们定义一个「亮度(Luminance)」
Y = kr*R + kg*G + kb*B
Y 即「亮度」,kr、kg、kb 即 R、G、B 的权重值。
这时,我们可以定义一个「色度(Chrominance)」
Cr = R – Y
Cg = G – Y
Cb = B – Y
Cr、Cg、Cb 分别表示在 R、G、B 上的色度分量。上述模型就是 YCbCr 颜色模型基本原理。
YCbCr 是属于 YUV 家族的一员,是在计算机系统中应用最为广泛的颜色模型,
现在我们从 ITU-R BT.601-7 标准中拿到推荐的相关系数,就可以得到 YCbCr 与 RGB 相互转换的公式:
Y = 0.299R + 0.587G + 0.114B
Cb = 0.564(B - Y)
Cr = 0.713(R - Y)
R = Y + 1.402Cr
G = Y - 0.344Cb - 0.714Cr
B = Y + 1.772Cb
这样对于 YCbCr 这个颜色模型我们就有个初步认识了,但是我们会发现,这里 YCbCr 也仍然用了 3 个数字来表示颜色啊,有节省 bit 吗?为了回答这个问题,
图片是由类似下面的像素组成:
一副图片就是一个像素阵列:
上图中,每个像素的 3 个分量的信息是完整的,YCbCr 4:4:4。
上图中,对于每个像素点都保留「亮度」值,
上图中,做了更多的省略,但是对图片质量的影响却不会太大。
对于更细节的内容,可以查询与 YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1 和 YCbCr 4:4:4 相关的知识。
码流格式
在上节中,我们简单的介绍了和 H.264 编码相关的图片、像素以及颜色模型相关的概念,
对于一个解码器来说,
我们可以看到,在 NAL 包之间存在着一些间隔标记。
NAL 包的第一个字节是定义包类型的头文件,NAL 包有这样一些类型:
NAL 的类型说明了当前这个 NAL 包的数据结构和数据含义,它可能是片(Slice),
如上图所示,NAL 包将其负载数据存储在 RBSP(Raw Byte Sequence Payload) 中,RBSP 是一系列的 SODB(String Of Data Bits)。
下面,我们来具体看看 H.264 的码流结构:
一张图片可以包含一个或多个分片(Slice),而每一个分片(
如我们所见,每个分片也包含着头和数据两部分,
宏块是视频信息的主要承载者,
从上图中,可以看到,宏块中包含了宏块类型、预测类型、
至此,我们对 H.264 的码流数据结构应该有了一个大致的了解。
帧内预测和帧间预测
在上一节的末尾,我们介绍了宏块的数据结构,其中提到了「
帧内压缩类似于图片压缩,跟这一帧的前面(或后面)一帧(
上节中,我们说过图片可以划分为宏块。一般来说,
帧内预测
对于帧内压缩,我们可以看下图示例:
我们可以通过第 1、2、3、4、5 块的编码来推测和计算第 6 块的编码,因此就不需要对第 6 块进行编码了,从而压缩了第 6 块,节省了空间。
帧内预测在 H.264 编码标准里有以下几种预测方法:
帧间预测
对于帧间压缩,可以看下面连续的两帧:
可以看到前后两帧的差异其实是很小的,
做帧间压缩常用的方式就是块匹配(Block Matching),就是找找看前面已经编码的几帧里面,
视频业务
我们平常最常接触到的视频相关的业务方式通常有:本地视频文件播
而本地视频文件播放就更简单了,
流媒体协议
随着互联网基础设施越来越完善,
- RTP,实时传输协议,Real-time Transport Protocol,是一种网络传输协议,运行在 UDP 协议之上,
RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式 。RTP协议常用于流媒体系统(配合 RTSP 协议)。 - RTCP,实时传输控制协议,Real-time Transport Control Protocol,是实时传输协议(RTP)的一个姐妹协议。
RTCP为RTP媒体流提供信道外(out-of-band) 控制。RTCP 本身并不传输数据,但和 RTP 一起协作将多媒体数据打包和发送。RTCP 定期在流多媒体会话参加者之间传输控制数据。RTCP 的主要功能是为 RTP 所提供的服务质量(Quality of Service)提供反馈。 - RTSP,实时流传输协议,Real Time Streaming Protocol,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP 在体系结构上位于 RTP 和 RTCP 之上,它使用 TCP 或 UDP 完成数据传输。使用 RTSP 时,客户机和服务器都可以发出请求,即 RTSP 可以是双向的。
- RTMP,实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。
协议基于 TCP,是一个协议族,包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等多种变种。RTMP 是一种设计用来进行实时数据通信的网络协议,主要用来在 Flash/AIR 平台和支持RTMP协议的流媒体/ 交互服务器之间进行音视频和数据通信。 - RTMFP,是 Adobe 公司开发的一套新的通信协议,全称 Real Time Media Flow Protocol,协议基于 UDP,支持 C/S 模式和 P2P 模式,即该协议可以让使用 Adobe Flash Player 的终端用户之间进行直接通信。
- HTTP,超文本传输协议,HyperText Transfer Protocol,运行在 TCP 之上,这个协议是大家非常熟悉的,它也可以用到视频业务中来。
- HLS,是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 HTTP Live Streaming,可支持流媒体的直播和点播,主要应用在 iOS 系统,为 iOS 设备(如 iPhone、iPad)提供音视频直播和点播方案。对于 HLS 点播,基本上就是常见的分段 HTTP 点播,不同在于,它的分段非常小。要实现HLS点播,
重点在于对媒体文件分段。对于 HLS 直播,相对于常见的流媒体直播协议,例如 RTMP 协议、RTSP 协议等,HLS 最大的不同在于直播客户端获取到的并不是一个完整的数据流, 而是连续的、短时长的媒体文件(MPEG-TS 格式),客户端不断的下载并播放这些小文件。由于数据通过 HTTP 协议传输,所以完全不用考虑防火墙或者代理的问题, 而且分段文件的时长很短,客户端可以很快的选择和切换码率, 以适应不同带宽条件下的播放。不过 HLS 的这种技术特点, 决定了它的延迟一般总是会高于普通的流媒体直播协议。
业务方案
在国内主流的一些视频业务相关的公司中,
网络视频点播
网络视频点播业务采用 HTTP 有两方面优势:
- HTTP 是基于 TCP 协议的应用层协议,媒体传输过程中不会出现丢包等现象,
从而保证了视频的质量。 - HTTP 是绝大部分的 Web 服务器支持的协议,
因而流媒体服务机构不必投资购买额外的流媒体服务器, 从而节约了开支。
网络视频点播服务采用的封装格式有多种:MP4,FLV,F4V 等,它们之间的区别不是很大。
视频编码标准和音频编码标准是 H.264 和 AAC,
视频播放器方面则都使用了 Flash 播放器。
网络视频直播
网络视频直播服务采用 RTMP 作为直播协议的好处是可以直接被 Flash 播放器支持,而 Flash 播放器在 PC 时代有着极高的普及率,并且与浏览器结合的很好。
封装格式、视频编码、音频编码、播放器方面几乎全部采用了 FLV、H.264、AAC、Flash。FLV、RTMP、
在现在看来,以上的数据已经有些过时了,
- 视频相关概念收集
- 视频监控相关概念
- 视频相关概念
- 视频的一些相关概念(一)
- 视频的一些相关概念(二)
- 视频的一些相关概念(三)
- 视频内容分析技术相关概念
- FFmpeg之音视频相关概念
- 视频编解码相关概念之一------帧和场
- 视频 概念
- 相关概念
- 视频相关
- 视频相关
- 视频相关
- iOS RTMP 视频直播开发笔记(3) --- 与帧相关的概念
- iOS RTMP 视频直播开发笔记(3) --- 与帧相关的概念
- 视频编解码概念:时间戳DTS和PTS的相关分析
- 视频流概念
- Android开发之 选择相册图片或者拍照
- iOS开发中可能会用到的一些函数。。。
- AFNetworking3.0网络请求
- maven使用别人写好的jar
- java泛型(一)、泛型的基本介绍和使用
- 视频相关概念
- 山东多校联合模拟赛 Day1第一题
- Incompatible integer to pointer conversion assigning to 'NSInteger *' (aka 'long *') from 'int'
- LuaJavaBridge - Lua 与 Java 互操作的简单解决方案(对于QUICK-COCOS开发者是很好的文章)
- MySQL的多列索引
- 协同过滤推荐算法的原理及实现
- css中的display
- 最短路
- S2-033漏洞分析