Video Render: Media Codec,OpenGL ES;
 Audio Render: OpenSL ES,AudioTrack;
 视频的编辑处理、上传和播放。
 音视频流程:视频采集→视频预处理→视频编码与封装→数据的存储/传输→视频解封装/解码→视频后处理→视频输出。
 优秀的开源播放器,可以播放MPEG-1、MPEG-2、MPEG-4、DivX、DVD/VCD、数字卫星频道、数字地球电视频道(digital terrestial television channels)、在许多作业平台底下透过宽频 IPv4、IPv6网络播放线上影片.
   音视频涉及到的核心技术主要有:视音频编解码、噪音抑制、回声消除、自动增益、前向纠错、丢帧补偿、抖动缓冲、CDN内容分发、网络流自适应等,语音视频技术是硬骨头.
   流媒体是指在Internet/Intranet中使用流式传输技术的连续时基媒体,如:音频、视频或多媒体文件,它在播放前并不下载整个文件,只将开始部分内容存入内存,其他的数据流随时传送随时播放,只是在开始时有一些延迟,其关键技术就是实时流式传输。
  以Android平台为例,Android硬编解码MediaCodec从Android4.1才开始支持,混流用的MediaMuxer到Android4.3才开始支持。   在Android4.1以前,如果开发者想要做视频相关应用通常会选择FFMpeg之类的开源编解码框架进行软编解码。当然,FFMpeg也可以配置选择使用硬编码。一般来说,如果应用只需要支持Android 4.3及以上,只需要做录制视频、播放Mp4文件,硬编解码方案优于软编解码方案。但是如果应用需要支持4.1以前的系统,或者要求支持其他音视频格式,比如rmvb之类的,可能就不得不使用软编方案了。

Android视频开发基础(一)- http://blog.csdn.net/goodlixueyong/article/details/62058805
几乎适合所有android手机视频转码参数- http://blog.163.com/gobby_1110/blog/static/29281715201271634027187/
Android多媒体技术(二)浅析Camera视频实时采集中涉及的参数配置- http://blog.csdn.net/andrexpert/article/details/54631629
直播技术总结(四)音视频数据压缩及编解码基础- https://blog.csdn.net/hejjunlin/article/details/60480109
> 流媒体 m3u8,HLS,HTTP
-- 流媒体技术从传输形式上可以分为:渐进式下载和实施流媒体。
 1.渐进式下载: 它是介于实时播放和本地播放之间的一种播放方式,渐进式下载不必等到全部下载完成后在播放,可以边下载边播放,播放完成后,整个文件会保存下来。
 2.实时流媒体:实时流媒体是一边接收数据包一边进行播放,本地不保留文件副本,数据总是实时传送的。用户可以快进快退,不过,实时流媒体播放必须保证数据包的传输速度大于文件的播放速度,否则影响播放效果。 
  实时流媒体传输的协议有:RTSP和HLS、MMS。HLS是苹果公司提出的,它只请求基本的HTTP报文,与RTSP和MMS不同,HLS可以穿过任何允许HTTP数据通过的防火墙。而且,HLS对服务器没有特殊要求,只要能够提供HTTP服务就可以了。 
  HLS的解决方案:首先通过音频或视频采集设备采集数据,然后将数据传递给Server对音频或者视频进行编码,编码要求采用MPEG-2格式,编码完成之后再通过媒体文件分隔工具进行分割,然后再讲这些分割好的文件和他们的索引文件发布到发布服务器上,然后客户端就可以访问了。
  hls (HTTP Live Streaming),Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。
 由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。
 根据以上的了解要实现HTTP Live Streaming直播,需要研究并实现以下技术关键点(HLS):
(1)采集视频源和音频源的数据; 
(2)对原始数据进行H264编码和AAC编码 ;
(3)视频和音频数据封装为MPEG-TS包; 
(4)HLS分段生成策略及m3u8索引文件; 
(5)HTTP传输协议;

-- 学过OSI模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中:
应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
传输层:TCP,UDP
网络层:IP,ICMP,OSPF,EIGRP,IGMP
数据链路层:SLIP,CSLIP,PPP,MTU
流媒体协议:(RTP、RTCP、RTSP、MMS、HLS、HTTP progressive streaming)
-- 流媒体流式传输有:
 顺序流式传输(Progressive Streaming)和实时流式传输(Realtime Streaming)两种方式。
 顺序流式传输(progressive streaming)的特点:期望音视频数据无错误无丢失顺序的从一端传输到另一端,例如警方对视频监控录像回放取证、网络电影播放等都需要数据正常到达然后解码播放,对于这种情况一般采用可靠的 tcp 方式传输。 
 实时流式传输(real time streaming)的特点:期望音视频数据实时的的从一段传输到另一端,例如数字电视行业的电视直播,由于 tcp 的包确认机制的开销大,基于窗口的拥塞控制技术不太适应稳定的流媒体传输,tcp 重传机制对实时流没有必要,对于这种情况一般采用 udp 方式传输。解决方案为:http(基于 tcp)做控制信息的传输,rtp(基于udp)做实时数据流的传输;http live streaming (hls) 码流自适应也可作为实时流传输的解决方案。

流媒体M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。HLS协议可以用来做点播,也可以用来做直播。HLS直播是对直播流实时进行格式转换,并切片出.ts文件,同时更新.m3u8文件。客户端通过间歇获取新的.m3u8文件来获取新的.ts文件的索引。HLS点播是通过预先转码好的视频进行切片,并生成一个完整的.m3u8文件,客户端通过获取.m3u8文件来得到视频的时长和各个.ts切片文件的索引。
  对于HLS格式的直播来说,.m3u8文件会在生成完一个.ts文件之后才生成。所以对于HLS直播来说,刚开始推流时,到第一个.ts文件生成完毕之前是无法打开的。同理,HLS的延迟也是跟.ts文件切片时间相关的。也就是说HLS的ts文件切片时间为1秒的话,HLS直播的延迟最小为1秒。

-- 码率控制,常见编码模式(VBR/ABR/CBR):
 1.VBR(Variable Bitrate)动态比特率 也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式,推荐编码模式
 2.ABR(Average Bitrate)平均比特率 是VBR的一种插值参数。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择。
 3.CBR(Constant Bitrate),常数比特率 指文件从头到尾都是一种位速率。相对于VBR和ABR来讲,它压缩出来的文件体积很大,而且音质相对于VBR和ABR不会有明显的提高。
(音频编码率(KBit为单位)/8 +视频编码率(KBit为单位)/8)×影片总长度(秒为单位)=文件大小(MB为单位)

> H.264
-- H.264规定了三种档次,每个档次支持一组特定的编码功能,并支持一类特定的应用。
 1)基本档次:利用I片和P片支持帧内和帧间编码,支持利用基于上下文的自适应的变长编码进行的熵编码(CAVLC)。主要用于可视电话、会议电视、无线通信等实时视频通信;
 2)主要档次:支持隔行视频,采用B片的帧间编码和采用加权预测的帧内编码;支持利用基于上下文的自适应的算术编码(CABAC)。主要用于数字广播电视与数字视频存储;
 3)扩展档次:支持码流之间有效的切换(SP和SI片)、改进误码性能(数据分割),但不支持隔行视频和CABAC。主要用于网络的视频流,如视频点播。

H.264由视讯编码层(Video Coding Layer,VCL)与网络提取层(Network Abstraction Layer,NAL)组成。
H.264包含一个内建的NAL网络协议适应层,藉由NAL来提供网络的状态,让VCL有更好的编译码弹性与纠错能力。
  H.264/AVC的阶层架构由小到大依序是:sub-block、block、macroblock、slice、slicegroup、frame/field-picture、sequence。对一个采用4:2:0取样的MB而言,它是由16x16点的Luma与相对应的2个8x8点Chroma来组成,而在H.264/AVC的规范中,MB可再分割成多个16x8、8x16、8x8、8x4、4x8、4x4格式的sub-blocks。所谓的slice是许多MB的集合,而一张影像是由许多slice所组成(图3),slice为H.264/AVC格式中的最小可译码单位(self-decodable unit).

在H264协议里定义了三种帧,完整编码的帧叫I帧,参考之前的I帧生成的只包含差异部分编码的帧叫P帧,还有一种参考前后的帧编码的帧叫B帧。
 H264采用的核心算法是帧内压缩和帧间压缩,帧内压缩是生成I帧的算法,帧间压缩是生成B帧和P帧的算法。

> GOP,如何增加视频GOP和I关键帧
视频云直播中的关键帧技术探秘- http://blog.csdn.net/weiyuefei/article/details/54927095
视频编解码技术小结- http://weiyinchao88.iteye.com/blog/1414306
统计视频文件的关键帧个数,以及GOP大小(关键帧间隔)- http://download.csdn.net/download/fengfeifengfei/9260399
-- 帧的类型分为以下3种:
  1.* Inter Frame(I帧);
  2.* P-Frame(P帧);
  3.* B-Frame(B帧);

-- 两种彩电视频制式:
NTSC (525 lines @ 59.94 Hz)  29.97 fps;
PAL (625 lines @ 50 Hz)  25 fps;
  NTSC和PAL属于全球两大主要的电视广播制式,但是由于系统投射颜色影像的频率而有所不同。NTSC是National Television System Committee的缩写,其标准主要应用于日本、美国,加拿大、墨西哥等等,PAL 则是Phase Alternating Line的缩写,主要应用于中国,香港、中东地区和欧洲一带。
  I帧编码是为了减少空间域冗余,P帧和B帧是为了减少时间域冗余。
  GOP最大可含帧数目:18 (NTSC) / 15 (PAL)
  GOP是由固定模式的一系列I帧、P帧、B帧组成。常用的结构由15个帧组成,具有以下形式IBBPBBPBBPBBPBB。简称GOP(4,2),指的是该图像组除了一个I帧外,包含了4个P帧,并且任何两个P帧或者I、P之间都有两个B帧。
  GOP(Group of Pictures)策略影响编码质量:所谓GOP,意思是画面组,一个GOP就是一组连续的画面。MPEG编码将画面(即帧)分为I、P、B三种,I是内部编码帧,P是前向预测帧,B是双向内插帧。简单地讲,I帧是一个完整的画面,而P帧和B帧记录的是相对于I帧的变化。没有I帧,P帧和B帧就无法解码,这就是MPEG格式难以精确剪辑的原因,也是我们之所以要微调头和尾的原因。
  为了便于视频内容的存储和传输,通常需要减少视频内容的体积,也就是需要将原始的内容元素(图像和音频)经过压缩,压缩算法也简称编码格式。例如视频里边的原始图像数据会采用 H.264 编码格式进行压缩,音频采样数据会采用 AAC 编码格式进行压缩。
  视频内容经过编码压缩后,确实有利于存储和传输; 不过当要观看播放时,相应地也需要解码过程。因此编码和解码之间,显然需要约定一种编码器和解码器都可以理解的约定。就视频图像编码和解码而言,这种约定很简单:
  编码器将多张图像进行编码后生产成一段一段的 GOP ( Group of Pictures ) , 解码器在播放时则是读取一段一段的 GOP 进行解码后读取画面再渲染显示。
  GOP ( Group of Pictures ) 是一组连续的画面,由一张 I 帧和数张 B / P 帧组成,是视频图像编码器和解码器存取的基本单位,它的排列顺序将会一直重复到影像结束。
  I 帧是内部编码帧(也称为关键帧),P 帧是前向预测帧(前向参考帧),B 帧是双向内插帧(双向参考帧)。简单地讲,I 帧是一个完整的画面,而 P 帧和 B 帧记录的是相对于 I 帧的变化。
  如果没有 I 帧,P 帧和 B 帧就无法解码。
  总结:一个视频 ( Video ) ,其图像部分的数据是一组 GOP 的集合, 而单个 GOP 则是一组 I / P / B 帧图像的集合。
  视频直播技术,就是将视频内容的最小颗粒 ( I / P / B 帧,…),基于时间序列,以光速进行传送的一种技术。直播就是将每一帧数据 ( Video / Audio / Data Frame ),打上时序标签 ( Timestamp ) 后进行流式传输的过程。发送端源源不断的采集音视频数据,经过编码、封包、推流,再经过中继分发网络进行扩散传播,播放端再源源不断地下载数据并按时序进行解码播放。如此就实现了 “边生产、边传输、边消费” 的直播过程。
-- MPEG-2 帧结构:
 MPEG-2压缩的帧结构有两个参数,一个是GOP(Group Of Picture)图像组的长度,一般可按编码方式从1-15;另一个是I帧和P帧之间B帧的数量,一般是1-2个。前者在理论上记录为N,即多少帧里面出现一次I帧;后者描述为多少帧里出现一次P帧,记录为M。

-- GOP说白了就是两个I帧之间的间隔.比较说GOP为120,如果是720p 60的话,那就是2s一次I帧.gop一般设置为帧率的2倍。
  关键帧间隔越长,也就是 GOP 越长,理论上画面越高清。但是生成 HLS 直播时,最小切割粒度也是一个 GOP,所以针对交互直播,通常不建议 GOP 设置太长。直播一般 2 个关键帧间隔即可。比如帧率是 24fps, 那么 2 个关键帧的间隔就是 48fps ,这个 GOP 就是2s。

- OBS 推流,播放端 HLS 出现视/音频不同步是哪个环节的问题?怎么优化?
- 有可能是采集端的问题,如果是采集端编码环节就出现音画不同步,可以在收流服务器上做音画时间戳同步,这样是全局的校对。如果是播放端解码性能问题,那么需要调节播放逻辑,比如保证音画时间戳强一致性的前提下,选择性丢一部帧。

- android中视频的编码有两种方式,它们有利两个核心类,一个是MediaCodec,另外也给是MediaRecorder。这两个类的功能类似,区别在于前者偏向于原生处理,后者类似于封装之后。

- texture其实跟surface差不多,只是i他的内部不再依赖surface和suifaceholder,而是SurfaceTexture。 
 surfaceTexture是在android 3.0之后新增的类,他和surfaceview一样,可以从camera preview或者vedio decode里面获得图像流,但是不同的是surface textrue在获得图像流之后不需要显示出来,而camera在获得图像流之后必须显示在surfaceview上。 这样就会有一些问题,如果我们想隐藏摄像头的预览,或者在处理之后再显示图像,当然我们有一些处理的方法。例如用一个布局对surfaceview进行遮盖,问题似乎是解决了,但是图像还是进行了显示,浪费了资源。在android 3.0之前4,这个问题是没法解决的,直到texture的出现。

-- bytebuffer含有两个子类directbytebuffer heapbytebuffer,dircetbbytebuffer是直接操作系统的内存,而heapbytebuffer是操作堆内存里的byte数组。
 
-- 直播实践之IJKPlayer浅析(一)- http://www.jianshu.com/p/803efd92d666
Android视频直播的实现(推流完整实现001)- http://blog.csdn.net/stn_lcd/article/details/56012437
移动直播技术秒开优化经验- http://www.jianshu.com/p/16a8d4817c60
 现今移动直播技术上的挑战要远远难于传统设备或电脑直播,其完整的处理环节包括但不限于:音视频采集、美颜/滤镜/特效处理、编码、封包、推流、转码、分发、解码/渲染/播放等。
 把视频剖析成如下结构:内容元素 ( Content ),:图像 ( Image ),音频 ( Audio ),元信息 ( Metadata )
 编码格式 ( Codec ):Video : H.264,H.265, …; Audio : AAC, HE-AAC, …
 容器封装 (Container):MP4,MOV,FLV,RM,RMVB,AVI,…
 任何一个视频 Video 文件,从结构上讲,都是这样一种组成方式:      
 由图像和音频构成最基本的内容元素;       
 图像经过视频编码压缩格式处理(通常是 H.264);       
 音频经过音频编码压缩格式处理(例如 AAC);
 注明相应的元信息(Metadata);
 最后经过一遍容器(Container)封装打包(例如 MP4),构成一个完整的视频文件。

-- 所谓容器,就是把编码器生成的多媒体内容(视频,音频,字幕,章节信息等)混合封装在一起的标准。容器使得不同多媒体内容同步播放变得很简单,而容器的另一个作用就是为多媒体内容提供索引,也就是说如果没有容器存在的话一部影片你只能从一开始看到最后,不能拖动进度条,而且如果你不自己去手动另外载入音频就没有声音。下面是几种常见的封装格式: 
1)AVI 格式(后缀为 .avi) 
2)DV-AVI 格式(后缀为 .avi) 
3)QuickTime File Format 格式(后缀为 .mov) 
4)MPEG 格式(文件后缀可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等) 
5)WMV 格式(后缀为.wmv .asf) 
6)Real Video 格式(后缀为 .rm .rmvb) 
7)Flash Video 格式(后缀为 .flv) 
8)Matroska 格式(后缀为 .mkv) 
9)MPEG2-TS 格式 (后缀为 .ts) 
目前,我们在流媒体传输,尤其是直播中主要采用的就是 FLV 和 MPEG2-TS 格式,分别用于 RTMP/HTTP-FLV 和 HLS 协议。

-- 视频文件
  视频文件的头字段:一个ftyp box 的描述(28 bytes)以及mdat的长度描述(4 bytes).
  在数据中查找moov的起始位置,发现前面会有ftyp的描述,长度刚刚好28bytes。你可以copy这28bytes到文件开始的28byte中。这ftyp的描述是从moov的起始位置 的前32byte开始一直到前4byte(后面4byte是moov的长度描述)。然后mdat的长度就是 moov的起始位置 减去 0x20,道理就不解释了。然后把这个值写到mdat的前面4byte。刚刚好填满32byte,之后就能顺利播放了。 
  如何在实时显示这个视频流呢?查看一下mpeg4的文件格式,很快就会知道答案,答案就在mdat中。mdat之后紧跟的就是视频媒体数据,每一帧以 00 00 01 b6 为开始标志,貌似没有结束标志,分帧的话估计要用这个。开始标志后紧接着的两bit就是I、P、B帧的标志了,分别对应值为00,01,10,记住是两bit不是两byte 。
  好了,把mdat的一帧数据取出来,可以用ffmpeg解码,然后显示,这样的路子是可行的,不过细节还是有点麻烦,关键是ffmpeg在解码mpeg4的时候一定要先指定width和height,否则解码失败。

流媒体系统对比:
http://en.wikipedia.org/wiki/Comparison_of_streaming_media_systems
封装格式对比:
http://en.wikipedia.org/wiki/Comparison_of_container_formats
视频编码器对比:
http://en.wikipedia.org/wiki/Comparison_of_video_codecs
音频编码格式对比:
http://en.wikipedia.org/wiki/Comparison_of_audio_formats
视频播放器对比:
http://en.wikipedia.org/wiki/Comparison_of_video_player_software

> 音视频流程
  视频压缩:视频文件格式(简称:文件格式),视频封装格式(简称:视频格式),视频编码方式(简称:视频编码)。
  视频的封装格式指的是以什么方式把视频和音频数据打包成一个文件。除了AVI之外,几乎所有的封装格式都支持流媒体播放,也就是“边下边播放”。视频编码就是为了压缩这些图片,以节省空间。关键帧。封装格式有AVI,MP4,TS,FLV,MKV,RMVB。
  所谓编码格式就指的一种压缩视频图像的算法。编码格式有HEVC H264 MPEG4 MPEG2 VP9 VP8 VC-1.
  目前主要的音频编码格式有AAC、AC-3、MP3、WMA。其中AAC应该是视频文件中最主流的编码格式。
  -- 解协议,解封装,解码视音频,视音频同步:
  解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。
  解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。
  视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

编码就只负责将最原始的音频和视频数据就行压缩,而压缩完的数据要怎么组织就拜托给上层的封装,封装接到视频音频数据负责给数据编号,指定同步协议,加入字幕等操作。经过封装后,得到的就是可以播放的上面提到的视频文件MP4或者MKV等等。
  视频处理功能如美颜、视频水印、滤镜、连麦等。

-- 那为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?核心思想就是去除冗余信息:
空间冗余:图像相邻像素之间有较强的相关性
时间冗余:视频序列的相邻图像之间内容相似
编码冗余:不同像素值出现的概率不同
视觉冗余:人的视觉系统对某些细节不敏感
知识冗余:规律性的结构可由先验知识和背景知识得到

-- 封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播”。有些格式更“万能”一些,支持的视音频编码标准多一些,比如MKV。而有些格式则支持的相对比较少,比如说RMVB。

通常视频依照24帧每秒的频率存储图像、甚至以30帧每秒的频率存储图像,如果以rgba的格式存储,占用的存储空间是非常庞大的,而且不利于网络传输。而YUV格式,如果一帧RGBA的图像数据占用16份,那么RGB占用12份,而YUV420只占用6份。虽然RGB的图像变为YUV格式质量通常会有损失,但是这个损失通常是可以接受的。
  虽然转换成YUV格式,可以节省一些存储空间,但是情况依旧不容乐观。人们又发现对于连续的视频而言,通常连续的帧之间,图像之间存在大量重复的数据,这样,就可以在存储的时候把重复的数据去掉,再需要展示的时候再恢复出来,这样就可以大大节省存储空间,网络传输的之后,也同样把大量重复的去掉,接收端播放的实话再恢复,以达到节省带宽,加快传输速度的目的。这个去除大量重复数据的过程我们可以理解为音视频的编码,把去除的数据恢复回来的过程,我们可以理解为音视频的解码,也就是Codec。 
  视频通常有图像又有声音,这些声音和图像的数据通常是两条不同的流,把这两条流混合在一起的过程就是混流。那么反之,把混合在一起的音视频拆分成各自的音频流、视频流的过程就是解复用。编解码的目的很明确。这就是混流了,也就时Mux,与之对应的就是解复用Demux.
  过滤器,滤镜;比如我们给视频图像加个水印,或者改变视频的声音,让声音变得尖锐或者低沉等等,这些就是滤镜的工作了。
  音视频的编解码分为软编解码和硬编解码,这里的软就是指软件,硬就是指硬件。所谓的软编解码,就是依赖软件,利用CPU进行编解码。而硬编解码可以理解为使用非CPU进行编解码,更准确的是,依赖音视频编解码模块进行音视频编解码。至于使用时到底是使用硬编解码还是软编解码,还是要依赖需求,根据它们各自的特点进行选择。 
  通常来说,软编解码实现直接简单,参数调整方便,支持格式广泛,编码视频质量相对硬编码更为清晰。但是软编解码相对硬编解码性能略差,会给CPU带来较重负载。

-- 图像及视频基础知识- https://blog.csdn.net/coloriy/article/details/46604877
  MPEG-4 视频标准引入了VO(Video Object)的概念,实现高效的压缩、基于内容的访问。VO其构成依赖于具体的应用和系统所处的环境。对于低要求应用情况,VO可以是一个矩形帧(即与MPEGⅠ相同的矩形帧),从而与原来标准兼容。对于基于内容的表示要求较高的应用来说,VO则可能是场景中某一物体,也可能是计算机产生的图像等。VOP(Video Object Plan)视频物体平面,是组成VO的连续帧画面的某一时刻某一帧画面的VO,可看作是VO的一个快照。在这一概念中,根据人眼感兴趣的一些特性如形状、运动、纹理等,将图像序列中每一帧中的场景看成是由不同视频对象平面VOP所组成,而同一对象连续的VOP称为视频对象VO,每个VO有三类信息来描述:运动信息、形状信息、纹理信息。
  MPEG-4 数 据 流 的数 据逻 辑 结构MPEG-4 的 视频从 上到下 大 致分 为: 视 觉序 列VS(Visual Sequence),视觉对象VO(Visual Object),视频对象层VOL(Video Object Layer),视频对象平面组GOV(Group of VOP),视频对象平面VOP(Video Object Plane)。VS对应于一段完整的视频场景,包含一个或多个VO,VO对应于场景中具体的人或者是其它的物体,如新闻节目中解说人员的头像,VO码流中包括的纹理、形状和运动信息层构成了VOL,VOL是VO在时间或空间上的分级描述,用于实现分级编码,一个VO可以由一个或多个视频对象层组成,在MEPG-4 的码流中GOV是可选的,多个VOP组成GOV,用于实现特流的随机存取,VOP是VO在某一时刻的取样,某一帧中的视频对象就是VOP,VO是以VOP(视频对象平面)的形式出现的,所以编码也是针对该时刻VO的形状、运动、纹理三类信息进行的。

-- ITU-T,国际电信联盟远程通信标准化组织(ITU-T for ITU Telecommunication Standardization Sector)
H - 视频音频以及多媒体系统复合方法;
H.223 低码率多媒体通信复合协议;
H.225.0 也被称为实时传输协议;
H.261 视频压缩标准, 约1991年;
H.262 视频压缩标准(和MPEG-2第二部分内容相同), 约1994年;
H.263 视频压缩标准, 约1995年;
H.263v2 (也就是 H.263+) 视频压缩标准, 约1998年;
H.264 视频压缩标准(和MPEG-4第十部分内容相同), 约2003年;
H.323 基于包传输的多媒体通信系统。

-- 国际标准化组织(ISO)
 制定的标准有MPEG-1、MPEG-2、MPEG-4等。并且已经制定出来了最新的MPEG-7,并且计划公布MPEG-21。
 由ISO下属的MPEG运动图象专家组开发视频编码方面主要是Mpeg1(vcd用的就是它)、Mpeg2(DVD使用)、Mpeg4(现在的DVDRIP使用的都是它的变种,如:divx,xvid等)、Mpeg4 AVC(现在正热门也就是H.264)。

H.264 是由ITU-T 的VCEG(视频编码专家组)和ISO/IEC 的MPEG(活动图像编码专家组)联合组建的联合视频组(JVT:joint video team)提出的一个新的数字视频编码标准,它既是ITU-T 的H.264,又是ISO/IEC 的MPEG-4 的第10 部分。而国内业界通常所说的MPEG-4 是MPEG-4 的第2 部分。即:

H.264=MPEG-4(第十部分,也叫ISO/IEC 14496-10)=MPEG-4 AVC

。 在系统层面上,H.264提出了一个新的概念,在视频编码层(Video Coding Layer, VCL)和网络提取层(Network Abstraction Layer, NAL)之间进行概念性分割,前者是视频内容的核心压缩内容之表述,后者是通过特定类型网络进行递送的表述,这样的结构便于信息的封装和对信息进行更好的 优先级控制。

-- MPEG-4通过层次结构进行管理,层次结构分别是视频场景、视频对象、视频对象层、视频对象平面组和视频对象平面,层次结构:
 VS(Video Session):视频场景,它位于层次结构的最高层,一个完整的视频序列可以由几个VS组成。
 VO(Video Object):视频对象,它是场景中的某个物体,最简单的情况下就是矩形框,它是有生命期的,由时间上连续的许多帧构成。
 VOL(Video Object Layer):视频对象层,VO的三种属性信息在该层进行编码,该层主要用来扩展VO的时域和空域分辨率,实现分成编码。
 GOV:视频对象平面组,由视频平面组合,是可选成分。视频对象层即可以由VOP直接组合,也可以由GOV组合而成。
 VOP(Video Object Plane):视频对象平面,它可以看作是VO在某一时刻的采样,即一帧VO。
 编解码器特定数据(Code-specific Data,简写为csd) 部分。

音视频基础知识(流媒体、多媒体),视频文件等相关推荐

  1. Android车载应用开发与分析(6)- 车载多媒体(一)- 音视频基础知识与MediaPlayer

    多媒体应用是车载信息娱乐系统的一个重要组成部分,一般包含音视频播放.收音机.相册等.车载应用多媒体系列初步计划分为六篇,这是第一篇. 参考资料 视频和视频帧:视频和帧基础知识整理 百度百科 - 声道 ...

  2. 音视频基础知识---音频编码格式

    音视频基础知识汇总: 音视频基础知识---协议相关RTSP RTMP HLS 音视频基础知识---封装格式 音视频基础知识---视频编码格式 音视频基础知识---音频编码格式 音视频基础知识---像素 ...

  3. C++实战手把手教您用ffmpeg和QT开发播放器--01音视频基础知识

    笔记:https://blog.csdn.net/tainjau/article/category/9272757 音视频基础知识 封装.解码.重采样.像素格式 1.MPEG-4 MPEG-4标准将众 ...

  4. 音视频流媒体高级开发进阶:从音视频基础知识到技术实践

    站在音视频行业风口 站在风口,猪也能飞".在已经到来的2022年,音视频行业依旧是怎么也绕不过去的风口. 一方面,随着各项5G政策的落实,音视频+5G风口,将会深入挖掘音视频产业的无限潜力, ...

  5. JAVA音视频解决方案----视频基础知识

    序言 公司现在在做汽车终端的平台,需要了解交通部808,1078的终端协议.  尤其是1078是关于音视频的协议.故此开始入坑java的音视频解决方案.本系列文章涉及一个完整的音视频服务搭建.大概整理 ...

  6. 音视频学习笔记1--音视频基础知识(1)

    音视频基础知识 1 音视频开发是什么? 2 音视频数据处理流程 2.1 音视频数据采集 2.2 封装与解封装 2.3 音视频输出 2.4 音视频同步 3 视频中的基础概念 3.1 视频码率 3.2 视 ...

  7. Android音视频学习系列(六) — 掌握视频基础知识并使用OpenGL ES 2.0渲染YUV数据

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  8. ffmpeg音视频基础知识

    ffmpeg音视频基础知识 前言 一.图像的基础知识 二.视频编码基础知识 1.视频和图片之间的关系 2.为什么要编码? 3.什么是编码? 视频相关专业术语 提示:文章写完后,目录可以自动生成,如何生 ...

  9. 音视频基础知识---像素格式RGB

    音视频基础知识汇总: 音视频基础知识---协议相关RTSP RTMP HLS 音视频基础知识---封装格式 音视频基础知识---视频编码格式 音视频基础知识---音频编码格式 音视频基础知识---像素 ...

最新文章

  1. 用Genymotion来调试android应用
  2. PostgreSql 功能和操作
  3. C++学习笔记之函数指针
  4. 用tinyscript解一些典型算法题,小试牛刀
  5. Spiral Matrix I II
  6. 用c.vim插件打造C/C++集成编辑器
  7. linux ftp 实例
  8. 苹果cms mysql 什么版本_分享如何使用阿里云ECS快速搭建CMS网站
  9. Dynamics CRM2013 6.1.1.1143版本插件注册器的一个bug
  10. springmvc源码-调用
  11. 《Objective-C基础教程》学习笔记第九-十章
  12. M1芯片MAC使用VMware Fusion安装Windows 11
  13. c++语言循环读写文件夹,【C++探索之旅】第一部分第十课:文件读写,海阔凭鱼跃...
  14. 怎样快速提升自身的编程水平?
  15. 支付宝广告投放形式有哪些?支付宝广告的投放方向!
  16. JavaScript history对象(back()、forward()、go())
  17. 学习分布式系统需要的知识
  18. PHP开发之-微信网页授权获取用户基本信息
  19. STATA 学习笔记 :相关系数
  20. 前端html网页,点击按钮或超链接 弹出 一个登陆的div窗口或者对话框

热门文章

  1. Opencv从入门到精通(五):透视图、拼接图片、颜色检测
  2. Java学起来到底有多难?
  3. 如何有效管理工时 - 2
  4. 5.1.2全景声音箱摆位_没有布线的5.1声道家庭影院如何升级到5.1.2全景声?
  5. TCP/IP协议详解 卷1 Traceroute程序
  6. 简体字转繁体字------- 如何将简体字文章翻译成繁体字,并加上拼音 python
  7. 网络带宽中的Kbps和KB/s到底是什么意思?
  8. python爬取天气存入excel_python爬取内容存入Excel实例
  9. 每日打卡 2017.04.02 博弈论专题
  10. 酷狗音乐导入ipod_iPod死了,听音乐也不会让人分心