精华内容
下载资源
问答
  • 花了很长时间终于在mini2440下能够用UVC摄像头采集图像并且压缩了。这个只是一个初级的程序,帧率还是很慢的。只是实现了功能
  • H264是一种常用的图像编码格式。视频图像每秒有几十帧,未压缩的情况下,每帧都有好几M,一部1小时的影片更是多达几十上百G。对视频进行编码的主要目的就是为了压缩视频存储大小。视频图像在时间、空间上存在冗余,...

    21c5c6f6cf5c4a6d941d50396809603b.png

    H264是一种常用的图像编码格式。

    视频图像每秒有几十帧,未压缩的情况下,每帧都有好几M,一部1小时的影片更是多达几十上百G。

    对视频进行编码的主要目的就是为了压缩视频存储大小。

    视频图像在时间、空间上存在冗余,这一冗余是正是各类编码的压缩依据。

    下面将从初学者的角度介绍如何去学习一个完全陌生的编码格式的解析。

    了解各种概念

    当阅读官方文档,或是网络资料的时候,不免被排山倒海的概念淹没。

    建议静下心先过一遍一些数学和信号处理的基础知识,比如什么是熵,什么是算术编码,什么是时域频域,什么是数字图像等等;推荐这位作者的H264系列文章:https://www.jianshu.com/p/9c4f51d4c3ff

    然后过一遍H264中的常见术语,如NAL,VCL,Slice,Macroblock等,IDR/I/P/B,图像/场/帧等;推荐这篇文章:

    https://blog.csdn.net/andywang201001/article/details/80274886

    理解语法

    H264官方文档(我看的是《T-REC-H.264-200503》)以表格形式定义了解析语法(在7.1节介绍了它的语法含义)

    不过直接看英文的官方文档可能会有点受挫,建议先找网上写的比较全的格式解析看看,比如这篇:http://mamicode.com/info-detail-1215990.html

    因为网络资料的作者一般有自己的专注领域,写的文章会有侧重,此时,就需要我们结合自己的工作内容看官方文档深入研究了。

    动手实践

    虽然我们有很多成熟的开源项目支持H264的解析,如官方的JM,如VLC的x264,但是如果要观察和理解每个字段的含义、变化规律,从最细粒度剖析一个视频文件,还是能自己Coding解析的比较好(何况造轮子是程序员的快乐呢!)

    在自己动手”造轮子“的过程中,我突然有一个想法,是不是可以做这样一个工具:

    • 对于任意的(编码)格式,可以按官方文档的语法写几乎逐行对应的代码,完成一个解析插件
    • 这个工具可以同时展示二进制的数据、插件解析的结果、各个字段对应的解释文档
    • 还能对于多次解析的结果建立透视图,查看多次解析过程某个字段是如何变化的

    于是我造了一个用于造轮子的工具:

    bitinsightgithub.com

    比如:

    我们学到H264的nal_unit中有一个nal_unit_type表示的当前nalu的类型,它的值指示了这个unit中的数据是什么。

    a0f15ba238ee0662685867365d5b6d83.png
    nal_unit语法表

    1059284ce1805ecb75b85f795977cc1b.png
    部分nal_unit_type

    有了工具,就可以根据表格逐行翻译:

    def nal_unit(d:Table, bs:BitStream):
        d.add_field('forbidden_zero_bit', bs.read_bits,
                    count=1)
        d.add_field('nal_ref_idc', bs.read_bits, count=2)
        d.add_field('nal_unit_type', bs.read_bits, count=5)

    把文档中关于nal_unit_type的解释摘抄下来,运行工具:

    086767584d3071b1314e73db79c7bad2.png

    就可以很有成就感地完成了nal_unit_type的解析了,而且还可以实时对照文档查看含义。(图中告诉我们0到6byte的范围是一个nal_unit_type为9的nalu,也就是一个Access unit delimeter

    当然,如果只是造造轮子,还不尽兴。

    在学习slice_header中的frame_num的时候有没有被绕晕?那不妨实际拿个文件,看看nal_unit_typeslice_typeframe_num的关系吧:

    我们再写个slice_header的解析代码:

    def slice_header(d:Table, bs:BitStream):
        d.add_field('first_mb_in_slice', bs.read_ue_golomb)
        d.add_field('slice_type', bs.read_ue_golomb)
        d.add_field('pic_parameter_set_id', bs.read_ue_golomb)
        pps = __find_pps_in_ctx(d.pic_parameter_set_id, d.context)
        if pps == None:
            raise Exception('no pps in ctx, abort!')
        sps = __find_sps_in_ctx(pps.seq_parameter_set_id, d.context)
        if pps == None:
            raise Exception('no sps in ctx, abort!')
        if sps.get_value('separate_colour_plane_flag', 0):
            d.add_field('colour_plane_id', bs.read_bits, count=2)
        try:
            nal_unit = d.context.nal_unit
        except AttributeError as e:
            raise Exception('no nal_unit in ctx, abort!')
    
        d.add_field('frame_num', bs.read_bits, count = (sps.log2_max_frame_num_minus4 + 4))
    比之前的nal_unit略显复杂,因为我们需要引用sps/pps/nal_unit的header.

    接下来就可以借助工具对多个nalu创建一个透视图了:

    e7e5fd80b8c3e18edbacc01a5302bf0b.png

    是不是一目了然了?

    不知不觉从方法论写出了工具安利,收尾~

    展开全文
  • H.264数字视频压缩格式 背景介绍 优势 特点 PCM(脉冲编码调制) https://baike.baidu.com/item/PCM/1568054?fr=aladdin 脉冲编码调制(Pulse Code Modulation,PCM),由A.里弗斯于1937年提出的,这一概念.

    目录

    PCM(脉冲编码调制)

    发展史

    工作原理

    iLBC编解码

    基本介绍

    技术优势

    Opus(声音编码格式)

    特性

    播放

    技术细节

    VP8视频压缩格式

    简介

    突破创新

    技术分析

    H.264数字视频压缩格式

    背景介绍

    优势

    特点


     

    PCM(脉冲编码调制)


    https://baike.baidu.com/item/PCM/1568054?fr=aladdin

    脉冲编码调制(Pulse Code Modulation,PCM),由A.里弗斯于1937年提出的,这一概念为数字通信奠定了基础,60年代它开始应用于市内电话网以扩充容量,使已有音频电缆的大部分芯线的传输容量扩大24~48倍。到70年代中、末期,各国相继把脉码调制成功地应用于同轴电缆通信、微波接力通信、卫星通信和光纤通信等中、大容量传输系统。80年代初,脉冲编码调制已用于市话中继传输和大容量干线传输以及数字程控交换机,并在用户话机中采用。

    在光纤通信系统中,光纤中传输的是二进制光脉冲“0”码和“1”码,它由二进制数字信号对光源进行通断调制而产生。而数字信号是对连续变化的模拟信号进行抽样、量化和编码产生的,称为PCM(Pulse-code modulation),即脉冲编码调制。这种电的数字信号称为数字基带信号,由PCM电端机产生。数字传输系统都是采用脉码调制(Pulse-code modulation)体制。PCM最初并非传输计算机数据用的,而是使交换机之间有一条中继线不是只传送一条电话信号。PCM有两个标准(表现形式)即E1和T1。

    中国采用的是欧洲的E1标准。T1的速率是1.544Mbit/s,E1的速率是2.048Mbit/s。

    脉冲编码调制可以向用户提供多种业务,既可以提供从2M到155M速率的数字数据专线业务,也可以提供话音、图象传送、远程教学等其他业务。特别适用于对数据传输速率要求较高,需要更高带宽的用户使用。

    发展史

    脉冲编码调制是70年代末发展起来的,记录媒体之一的CD,80年代初由飞利浦索尼公司共同推出。脉码调制的音频格式

    也被DVD-A所采用,它支持立体声和5.1环绕声,1999年由DVD讨论会发布和推出的。脉冲编码调制的位深度,从14-bit发展到16-bit、18-bit、20-bit直到24-bit;采样频率从44.1kHz发展到192kHz。PCM脉码调制这项技术可以改善和提高的方面则越来越来小。只是简单的增加PCM脉码调制位深度和采样率,不能根本的改善它的根本问题。其原因是PCM的主要问题在于:

    (1)任何脉冲编码调制数字音频系统需要在其输入端设置急剧升降的滤波器,仅让20Hz-22.05kHz的频率通过(高端22.05kHz是由于CD44.1kHz的一半频率而确定)。

    (2)在录音时采用多级或者串联抽选的数字滤波器(减低采样频率),在重放时采用多级的内插的数字滤波器(提高采样频率),为了控制小信号在编码时的失真,两者又都需要加入重复定量噪声。这样就限制了PCM技术在音频还原时的保真度。

    工作原理

    脉冲编码调制就是把一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。脉冲编码调制就是对模拟信号先抽样,再对样值幅度量化,编码的过程。

    抽样,就是对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号,抽样必须遵循奈奎斯特抽样定理。该模拟信号经过抽样后还应当包含原信号中所有信息,也就是说能无失真的恢复原模拟信号。它的抽样速率的下限是由抽样定理确定的。抽样速率采用8KHZ。

    量化,就是把经过抽样得到的瞬时值将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示,通常是用二进制表示。

    量化误差:量化后的信号和抽样信号的差值。量化误差在接收端表现为噪声,称为量化噪声。 量化级数越多误差越小,相应的二进制码位数越多,要求传输速率越高,频带越宽。 为使量化噪声尽可能小而所需码位数又不太多,通常采用非均匀量化的方法进行量化。 非均匀量化根据幅度的不同区间来确定量化间隔,幅度小的区间量化间隔取得小,幅度大的区间量化间隔取得大。

    一个模拟信号经过抽样量化后,得到已量化的脉冲幅度调制信号,它仅为有限个数值。

    编码,就是用一组二进制码组来表示每一个有固定电平的量化值。然而,实际上量化是在编码过程中同时完成的,故编码过程也称为模/数变换,可记作A/D。

    话音信号先经防混叠低通滤波器,进行脉冲抽样,变成8KHz重复频率的抽样信号(即离散的脉冲调幅PAM信号),然后将幅度连续的PAM信号用“四舍五入”办法量化为有限个幅度取值的信号,再经编码后转换成二进制码。对于电话,CCITT规定抽样率为8KHz,每抽样值编8位码,即共有2∧8=256个量化值,因而每话路PCM编码后的标准数码率是64kb/s。为解决均匀量化时小信号量化误差大,音质差的问题,在实际中采用不均匀选取量化间隔的非线性量化方法,即量化特性在小信号时分层密,量化间隔小,而在大信号时分层疏,量化间隔大。

    在实际中使用的是两种对数形式的压缩特性:A律和μ律,A律编码主要用于30/32路一次群系统,μ律编码主要用于24路一次群系统。A律PCM用于欧洲和中国,μ律PCM用于北美和日本。

     

    iLBC编解码


    https://baike.baidu.com/item/iLBC

    iLBC是一种专为包交换网络通信设计的编解码,优于目前流行的G.729、G.723.1,对丢包进行了特有处理,即使在丢包率 相当高的网络环境下,仍可获得非常清晰的语音效果。

    基本介绍

    30ms ptime的iLBC所占用的总通信带宽比通常采用的ptime 20ms的G.729的带宽还要小,以下是iLBC与传统编解码占用带宽列表:

    语音质量一直是VoIP应用的主要难点,如何保证和提高IP网络传输语音的通话效果,是VoIP应用迫切需要解决的问题。“iLBC”编解码的出现,解决了在包交换的IP网络中,传输语音所遇到的网络丢包严重影响通话质量等实际问题,实现了“语音质量的飞跃”。

    下图为在不同的网络丢包环境下,使用iLBC与G.729A、G.723.1编解码的语音质量比较。

    无论在高丢包率条件下还是在没有丢包的条件下,iLBC的语音质量都优于目前流行的G.723.1, G.729A等标准编解码;而且丢包率越大,使用iLBC的语音质量优势越明显。通常情况下,为了衡量IP网络语音质量,将≥5%丢包率的网络情况定义为VoIP的极限网络条件。经过语音质量测试,即使在5%丢包率的情况下,iLBC仍然能够提供相当于GSM手机的语音质量。

    技术优势

    iLBC的主要优势在于对丢包的处理能力。iLBC独立处理每一个语音包,是一种理想的包交换网络语音编解码。在正常情况下,iLBC会记录下当前数据的相关参数和激励信号,以便在之后的数据丢失的情况下进行处理;在当前数据接收正常而之前数据包丢失的情况下,iLBC会对当前解码出的语音和之前模拟生成的语音进行平滑处理,以消除不连贯的感觉;在当前数据包丢失的情况下,iLBC会对之前记录下来的激励信号作相关处理并与随机信号进行混合,以得到模拟的激励信号,从而得到替代丢失语音的模拟语音。总的来说,和标准的低位速率编解码相比,iLBC使用更多自然、清晰的元素,精确的模仿出原始语音信号,被誉为更适合包交换网络使用的可获得高语音质量的编解码。

    此外,大部分标准的低位速率编解码,如G.723.1和G.729,仅对300Hz——3400Hz的频率范围进行编码。在这个频率范围里,用G.711编解码所达到的语音质量,就是传统PSTN网络进行语音通话的效果。

     

    Opus(声音编码格式)


    https://baike.baidu.com/item/opus/680370

    opus是一种声音编码格式,Opus的前身是celt编码器。是由IETF开发,适用于网络上的实时声音传输,标准格式为RFC 6716。

    Opus编码器 是一个有损声音编码的格式,由互联网工程任务组(IETF)近来开发Opus 格式是一个开放格式,使用上没有任何专利或限制。

    特性

    Opus的前身是celt编码器。在当今的有损音频格式争夺上,拥有众多不同编码器的AAC格式打败了同样颇有潜力的Musepack、Vorbis等格式,而在Opus格式诞生后,情况似乎不同了。通过诸多的对比测试,低码率下Opus完胜曾经优势明显的HE AAC,中码率就已经可以媲敌码率高出30%左右的AAC格式,而高码率下更接近原始音频。

    播放

    Opus格式音频可以使用GStreamer, libavcodec(ffmpeg),Foobar2000,Firefox(15 Beta或更新)等播放,推荐Foobar2000 1.1.14 beta 1或者更新的版本播放。

    技术细节

    1. 6 kb /秒到510 kb / s的比特率
    2. 采样率从8 kHz(窄带)到48 kHz(全频)
    3. 帧大小从2.5毫秒到60毫秒
    4. 支持恒定比特率(CBR)和可变比特率(VBR)
    5. 从窄带到全频段的音频带宽
    6. 支持语音和音乐
    7. 支持单声道和立体声
    8. 支持多达255个频道(多数据流的帧)
    9. 可动态调节比特率,音频带宽和帧大小
    10. 良好的鲁棒性丢失率和数据包丢失隐藏(PLC)
    11. 浮点和定点实现

     

    VP8视频压缩格式


    https://baike.baidu.com/item/VP8

    Google 也发布了 VP8 编码的实做库:libvpx,以BSD授权条款的方式发布,随后也附加了专利使用权。而在经过一些争论之后,最终 VP8 的授权确认为一个开放源代码授权。

    简介

    视频压缩解决方案厂商On2 Technologies公司现已推出最新的视频压缩格式On2 VP8。On2 VP8是第八代的On2视频,能以更少的数据提供更高质量的视频,而且只需较小的处理能力即可播放视频,为致力于实现产品及服务差异化的网络电视、IPTV和视频会议公司提供理想的解决方案。

    对更高效视频压缩格式的需求显着

    高清电影和电视节目的下载与发送如今已是司空见惯的事情,再加上价格廉宜的高清网络摄像头,我们预计高分辨率的用户自创内容将迅速增长,而高品质的视频通信解决方案也将被广泛采用。

    虽然数据传输速度在不断提高,但带宽的成本和可用性仍将是控制实施成本的主要障碍,因为视频服务使用的带宽比任何其它IP应用都要大。根据思科公司 (Cisco) 出版的白皮书显示,2012年,IP流量将超过半个皆字节 (zettabyte, ZB),其中视频占所有消费应用流量的近90%。2012年,单是互联网视频预计每月就产生10艾字节(exabyte, EB) 的数据。

    突破创新

    On2 VP8加入了40多项的创新技术,在压缩效率和性能方面超越了市面上的所有其他视频格式。这些创新技术包括:

    • * 基于虚拟参考祯的高级预计编码
    • * 基于宏块级的多线程技术
    • * 改进的局域参考编码
    • * 增加复杂度的先进上下文熵编码
    • * 稀疏目标区域的自适应回路滤波

    On2 VP8在质量和性能方面超越H.264VC-1和Real 视频

    随着On2 VP8的推出,On2 视频现已大幅超越所有其它商用格式的压缩性能。例如,主要的H.264实现方案需要两倍的数据才能提供与On2 VP8相同质量的视频 (基于客观峰值信噪比 (PSNR) 测试结果)。

    此外,On2 VP8比特流的解码只需要极少的处理周期,故用户无需拥有最新、最高级的PC机或移动设备也能够享受到On2 VP8的视频质量

    技术分析

    在这里我尝试回答的问题是这些:

    1. VP8有多好? 从压缩的角度说这种文件格式能比H.264更好吗?以及一个优秀的VP8编码器能击败x264吗?On2声称VP8比H.264好50%,但是On2经常说出这种他们自己都无法提供有效证据的荒谬声明,所以这样一个数字几乎可以断定是不正确的。比如说VP7,曾被认为比H.264好15%并且快很多,但事实是它既没有H.264质量好也没有它快。
    2. On2的VP8实现怎么样?和标准本身多好无关,这是说具体实现是否优秀,或者说On2的VP8实现会和VP3一样,发布了一个根本无法使用的糟糕实现,将希望寄托于开发者团体去修正他们。让我们祈求VP8不要这样吧,Theora的修补花了6年啊!
    3. VP8真正意义上免专利的可能性有多少?即使VP8比H.264差,但免专利显而易见是一个很有用的特性。但是就像我在之前的文章中提到的,Google的声明并不能保证它就是免专利的。微软在几年前发布VC-1时曾做过类似的事,但是发布后没几个月,一堆公司就在他上面不断地申请专利,没过多久专利的数目就足以形成专利池了。

    我们从VP8的核心特性展开分析。我们主要通过和现存视频格式的比较来分析。谨记在心的是编码器和标准是两码事,完全有可能一个优秀的编码器是建立在一个糟糕的标准之上的,反之亦然。这就是为什么一个非常优秀的MPEG-1编码器能击败一个惨不忍睹的H.264编码器。

    • 编码器:预测->变换+量化->熵编码->除块滤波
    • 解码器:熵解码->预测->反量化+反变换->除块滤波

     

    H.264数字视频压缩格式


    https://baike.baidu.com/item/H.264?fromtitle=H264&fromid=7338504

    H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。这个标准通常被称之为H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明确的说明它两方面的开发者。

    H264标准各主要部分有Access Unit delimiter(访问单元分割符),SEI(附加增强信息),primary coded picture(基本图像编码),Redundant Coded Picture(冗余图像编码)。还有Instantaneous Decoding Refresh(IDR,即时解码刷新)、Hypothetical Reference Decoder(HRD,假想参考解码)、Hypothetical Stream Scheduler(HSS,假想码流调度器)。

    背景介绍

    H.264是国际标准化组织ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式。H.264是ITU-T以H.26x系列为名称命名的视频编解码技术标准之一。H.264是ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)的联合视频组(JVT:joint video team)开发的一个数字视频编码标准。该标准最早来自于ITU-T的称之为H.26L的项目的开发。H.26L这个名称虽然不太常见,但是一直被使用着。H.264是ITU-T以H.26x系列为名称命名的标准之一,AVC是ISO/IEC MPEG一方的称呼。

    国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1MPEG-2MPEG-4等。而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,AVC)的第10 部分。因此,不论是MPEG-4 AVC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。

    1998年1月份标准开始草案征集,1999年9月,完成第一个草案,2001年5月制定了其测试模式TML-8,2002年6月的 JVT第5次会议通过了H.264的FCD板。2003年3月正式发布。在2005年又开发出了H.264的更高级应用标准MVC 和 SVC 版本。

    国际电联ITU和MPEG组织在发布了H.264标准之后,很快就发布公告,为下一代视频编解码标准H.265征集技术方案。为H.265设定的技术性能指标是:压缩效率比H.264提高1倍、且不明显提高编码和解码的计算量。据MPEG组织2009年西安会议的回顾,尚无一个技术提案达到上述指标。

    H.264是在MPEG-4技术的基础之上建立起来的,其编解码流程主要包括5个部分:帧间和帧内预测(Estimation)、变换(Transform)和反变换、量化(Quantization)和反量化、环路滤波(Loop Filter)、熵编码(Entropy Coding)。

    H.264标准的主要目标是:与其它现有的视频编码标准相比,在相同的带宽下提供更加优秀的图象质量。通过该标准,在同等图象质量下的压缩效率比以前的标准(MPEG2)提高了2倍左右。

    H.264可以提供11个等级、7个类别的子协议格式(算法),其中等级定义是对外部环境进行限定,例如带宽需求、内存需求、网络性能等等。等级越高,带宽要求就越高,视频质量也越高。类别定义则是针对特定应用,定义编码器所使用的特性子集,并规范不同应用环境中的编码器复杂程度。

    优势

    1.低码率(Low Bit Rate):和MPEG2和MPEG4 ASP等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3。 [1] 

    2.高质量的图像:H.264能提供连续、流畅的高质量图像(DVD质量)。 [1] 

    3.容错能力强:H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具。 [1] 

    4.网络适应性强:H.264提供了网络抽象层(Network Abstraction Layer),使得H.264的文件能容易地在不同网络上传输(例如互联网,CDMA,GPRS,WCDMA,CDMA2000等)。 [1] 

    H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。举个例子,原始文件的大小如果为88GB,采用MPEG-2压缩标准压缩后变成3.5GB,压缩比为25∶1,而采用H.264压缩标准压缩后变为879MB,从88GB到879MB,H.264的压缩比达到惊人的102∶1。低码率(Low Bit Rate)对H.264的高的压缩比起到了重要的作用,和MPEG-2和MPEG-4 ASP等压缩技术相比,H.264压缩技术将大大节省用户的下载时间和数据流量收费。尤其值得一提的是,H.264在具有高压缩比的同时还拥有高质量流畅的图像,正因为如此,经过H.264压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。 [1]

    特点

    H264标准的主要特点如下:

    1.更高的编码效率:同H.263等标准的特率效率相比,能够平均节省大于50%的码率。

    2.高质量的视频画面:H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点。

    3.提高网络适应能力:H.264可以工作在实时通信应用(如视频会议)低延时模式下,也可以工作在没有延时的视频存储或视频流服务器中。

    4.采用混合编码结构:同H.263相同,H.264也使用采用DCT变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4x4二维整数变换等新的编码方式,提高了编码效率。

    5.H.264的编码选项较少:在H.263中编码时往往需要设置相当多选项,增加了编码的难度,而H.264做到了力求简洁的“回归基本”,降低了编码时复杂度。

    6.H.264可以应用在不同场合:H.264可以根据不同的环境使用不同的传输和播放速率,并且提供了丰富的错误处理工具,可以很好的控制或消除丢包和误码。

    7.错误恢复功能:H.264提供了解决网络传输包丢失的问题的工具,适用于在高误码率传输的无线网络中传输视频数据。

    8.较高的复杂度:264性能的改进是以增加复杂性为代价而获得的。据估计,H.264编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍。

     

     

     

     

     

     

     

     

     

     

    展开全文
  • h264格式

    2017-06-20 16:32:48
    H264,同时也是MPEG-4的第十部分,是由ITU-T视频编码专家组和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组提出的高度压缩数据视频编码器标准(引用自被堵百科)。 H264编码格式 H264支持4:2:0的连续和隔行...

    H264介绍

    H264,同时也是MPEG-4的第十部分,是由ITU-T视频编码专家组和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组提出的高度压缩数据视频编码器标准(引用自被堵百科)。

    H264编码格式

    H264支持4:2:0的连续和隔行视频的编码和解码。它主要分为两层:视频编码层(VCL,Video Coding Layer)和网络提取层(NAL,NetWork Abstraction Layer)。VCL数据就是编码后的数据,表示的是编码后的视频序列。在数据传输或者存储之前,会将VCL数据封装在NAL单元中。

    NAL单元包括一个NAL头和RBSP,NAL单元序列的示意图如下:

    NAL头

    RBSP

    NAL头

    RBSP

    NAL头

    RBSP

     

    NAL头包括起始序列和NAL类型,起始序列为0x00000001或者0x000001,NAL头结构包括forbidden_bit(1bit)+ nal_reference_bit(2bit) + nal_unit_type(5bit)

    1.forbidden_bit                            禁止位,初始为0,当网络发现NAL单元有比特错误时可设置该比特为1,以便接收方纠错或丢掉该单元。

    2.nal_reference_bit                  nal重要性指示,标志该NAL单元的重要性,值越大,越重要,解码器在解码处理不过来的时候,可以丢掉重要性为0NALU

    不同类型的NALU的重要性指示如下表所示。 

    nal_unit_type

    NAL类型

    nal_reference_bit

    0

    未使用

     0

    1

    非IDR的片

    此片属于参考帧,则不等于0,

    不属于参考帧,则等与0

    2

    片数据A分区

    同上

    3

    片数据B分区

    同上

    4

    片数据C分区

    同上

    5

    IDR图像的片

    5

    6

    补充增强信息单元(SEI)

    0

    7

    序列参数集

    非0

    8

    图像参数集

    非0

    9

    分界符

    0

    10

    序列结束

    0

    11

    码流结束

    0

    12

    填充

    0

    13..23

    保留

     0

    24..31

    不保留

     0

    H264码流结构

                                                     

    展开全文
  • h.264 和 mpeg-4 的关系:h.264 /avc ( advanced video coding )标准,是 mpeg-4 的第 10 部分。 mpeg-4的初衷是将dvd质量的图像码流从每秒6兆降低到1.5兆,将高清电视的码流从每秒几十兆降低到6~8兆。要实现...

     

    h.264 和 mpeg-4 的关系:

    • h.264 /avc ( advanced video coding )标准,是 mpeg-4 的第 10 部分。
       
    • mpeg-4的初衷是将dvd质量的图像码流从每秒6兆降低到1.5兆,将高清电视的码流从每秒几十兆降低到6~8兆。要实现这样的编码压缩水平,就要用到一种叫avc(advanced video codec)的技术。国际电联(itu)将这项技术命名为h.264标准,mpeg 把这项技术放到mpeg-4标准里的第10章(part 10)。这就是mpeg-4h.264的关系。
    • h.264/avc是由iso/iecitu-t组成的联合视频组(jvt)制定的新一代视频压缩编码标准,于20035月完成制订。相对于先前的标准,h.264/avc无论在压缩效率、还是在网络适应性方面都有明显的提高,因此,业界普遍预测其将在未来的视频应用中替代现有的视频压缩标准。

    但是,h.264/avc标准由于对视频源的限制,仅支持娱乐级视频质量。为了进一步扩大其应用范围,使其适应高保真视频压缩的应用,jvt20047月对h.264/avc做了重要的补充扩展,称为frext(fidelity range extensions)

    h.264/avc标准第一版支持的源图像为每象素8b,且采样方式仅限于420;而新近扩展的frext部分则扩大了标准的应用范围,如专业级的视频应用、高分辨率/高保真的视频压缩等。frexth.264/avc的改善主要在:(1)进一步引入一些先进的编码工具,提高了压缩效率;(2)视频源的每个样值均可超过8b,最高可达12b;(3)增加了422444的采样格式;(4)更高的比特率,更高的图像分辨率;(5)可达到图像高保真的要求,支持无损压缩;(6)支持rgb格式的压缩,同时避免了色度空间转换的舍入误差。

    • mpeg-4 visual (mpeg-4 part 2)h.264 (mpeg-4 part 10)均为新一代多媒体通讯压缩与解压缩国际标准。其中mpeg-4目前作为消费性电子核心技术正处于市场导入期。如目前利润最高的高端smart phone多带有动态影音摄影的功能,其压缩标准主流即为mpeg-4 visual。此外3g(第三代行动电话)手机所支持的影音功能亦多包含mpeg-4 visual编解码功能。多媒体播放器的顶端产品(注:ipod属中阶产品)目前非pmp (portable media player)莫属,单价高达2k~6k¥的系统均需包含mpeg-4 visual的播放功能。下一代的pmp将进一步结合数字相机与摄影机的功能达到全功能实时多媒体摄、录、放与传输的需求。当然mpeg-4 visual还是扮演核心与关键技术角色。h.264整合iso/iecitu-t两大标准阵营,制定mpeg-4 visual的下一代影音压缩标准。目的在进一步提高自然影像的压缩率,且在通讯环境变化时亦能确保一定的影音品质,是下一代数字电视的编解码标准。h.264为达成上述目的,采用多项创新技术(亦使h.264mpeg-1/-2/-4 visual不兼容),故软硬件设计上与mpeg-4 visual炯异。而重要的是h.264将应用在3g行动通讯之上。故h.264为下一代3c产品的杀手级核心技术。
    • 通常所说h.264mpeg4的比较是指h.264mpeg-4 part 2 advanced simple profile (asp)的比较而言

    分辨率和实时性术语:

    • 完全实时:pal=25f/sntsc=30f/s
    • 基本实时(准实时):pal:8~15f/s ntsc:10~17f/s
    • 非实时:pal<8f/s  ntsc<10f/s
    • cif (352 x 240  ntsc, 352 x 288  pal)
    • qcif=cif*1/4=176*120 ntsc,176*144 pal
    • fd1(d1)=4*cif=704*480 ntsc,704*576 pal
    • hd1(half-d1)=d1*1/2=704*240 ntsc,704*288 pal
    • d1480i格式,和ntsc模拟电视清晰度相同
    • d2480p格式,和逐行扫描dvd规格相同,dvd的分辨率为480p,也就是720x480(ntsc)720x576(pal)
    • d31080i格式,分辨率为1920×1080 i/60hz
    • d4 720p格式,分辨率为1280×720 p/60hz
    • d51080p格式,分辨率为1920×1080逐行扫描,专业格式

    专利费问题:

    • 在专利许可政策上,h.264 也吸取了mpeg2 mpeg4 part2 的经验和教训,推出了较之前标准更低和操作性更强的许可政策。例如,avc 许可政策每台产品0.20 美元的收费,与mpeg-2 每个终端收费4-6美元(2002 年前)和2.5 美元(2002 年之后)相比,降价幅度超过一个数量级。而其相比于mpeg4 part2,除了取消了按编解码时间收费(2 美分/小时)以外,也降低了对于内容的收费,从而受到了更多机构、企业和运营商的欢迎。

     基础知识:

    • h.264 标准压缩系统由视频编码层( vcl )和网络提取层( network abstraction layer , nal )两部分组成。 vcl 中包括 vcl 编码器与 vcl 解码器,主要功能是视频数据压缩编码和解码,它包括运动补偿、变换编码、熵编码等压缩单元。 nal 则用于为 vcl 提供一个与网络无关的统一接口,它负责对视频数据进行封装打包后使其在网络中传送,它采用统一的数据格式,包括单个字节的包头信息、多个字节的视频数据与组帧、逻辑信道信令、定时信息、序列结束信号等。包头中包含存储标志和类型标志。存储标志用于指示当前数据不属于被参考的帧。类型标志用于指示图像数据的类型。vcl 可以传输按当前的网络情况调整的编码参数。
    • h.264  h.261  h.263 一样,也是采用 dct 变换编码加 dpcm 的差分编码,即混合编码结构。同时,
    • h.264 在混合编码的框架下引入了新的编码方式,提高了编码效率,更贴近实际应用。
    • h.264 没有繁琐的选项,而是力求简洁的  回归基本  ,它具有比 h.263++ 更好的压缩性能,又具有适应多种信道的能力。
    • h.264 的应用目标广泛,可满足各种不同速率、不同场合的视频应用,具有较好的抗误码和抗丢包的处理能力。
    • h.264 的基本系统无需使用版权,具有开放的性质,能很好地适应 ip 和无线网络的使用,这对目前因特网传输多媒体信息、移动网中传输宽带信息等都具有重要意义。
    • 新的快速运动估值算法 umhexagons (中国专利)是一种运算量相对于 h.264 中原有的快速全搜索算法可节约 90 %以上的新算法,全名叫  非对称十字型多层次六边形格点搜索算法  (unsymmetrical-cross muti-hexagon search )  ,这是一种整像素运动估值算法。由于它在高码率大运动图像序列编码时,在保持较好率失真性能的条件下,运算量十分低,已被 h.264 标准正式采纳。

     相关文章 ::

      采用H.264编码视频的参数设定  http://blog.csdn.net/jerryyu810/archive/2009/08/17/4455318.aspx

    展开全文
  • 使用tiny4412开发板,USB摄像头采集YUYV422视频数据,经过硬件转码为YUV420(NV12)格式数据,最后通过硬件H264压缩H264数据。程序运行生成NV12格式视频数据文件和H264压缩文件。通过YUVplay 和VLC播放器可进行...
  • 前面在讲封装格式过程中,都有一个章节讲解如何将H.264的NALU单元如何打包到TS、FLV、RTP中,解封装刚好相反,怎么从这些封装格式里面解析出一个个NALU单元。 NALU即是编码器的输出数据又是解码器的输入数据,所以在...
  • 压缩算法与压缩格式区别 12. 压缩算法于格式 12.1. H264 mpg jpg MP3 22.2. Zip rar 。LZW (Lempel-Ziv-Welch) 22.3. Lempel-Ziv(LZ)压缩方法是最流行的无损存储算法之一。DEFLATE是 LZ 的一个变体 22.4. RLE...
  • H264格式详解

    2021-03-09 15:28:08
    H264是属于视频的编码层的标准格式,视频编码显然是为了压缩大小。 我们看下一个完全没压缩的视频数据大小。假设视频是高清(1280 * 720),每秒30帧,也就是每秒的数据 1280 * 720 *30 / 8(字节) /1024(KB)/...
  • 一、V4L2采集YUYV视频数据 a) 打开V4L2设备并创建接收yuyv数据的文件 open_v4l2_device(const char *const devname) video_obj.v4l2_fd=open(devname,O_RDWR)//打卡v4l2...b) 设置视频格式,分辨率 set_v4l2_fmt
  • h.264 和 mpeg-4 的关系: h.264 /avc ( advanced video coding )标准,是 mpeg-4 的第 10 部分。  mpeg-4的初衷是将dvd质量的图像码流从每秒6兆降低到1.5兆,将高清电视的码流从每秒几十兆降低到6~8兆。要...
  • 学习小技巧之前,我们先来了解一下什么是H264?先来看一个问题,为什么要编码呢?对于720P分辨率,深度为8的一幅图片的数据量为:1280*720*8(位),如果视频帧率为15,那一秒钟的数据量为:1280*720*8*15/8/1024/1024...
  • H264解析和帧与rtp格式

    2020-09-13 21:47:18
    1: H264 nalu单元 2: 两种h264格式. (1) H264格式 (2) H264 rtp格式 3 抓包分析 ...分辨率是1280*720,帧率是25,那么一秒所产生正常的...H264格式分成两种情况h264格式h264 rtp格式. h264 rtp格式又分成3..
  • AVCodec *codec = avcodec_find_encoder(AV_CODEC_ID_H264); if (!codec) { fprintf(stderr, "Codec '%s' not found\n", "libx264"); exit(1); } // 给编码器分配内存,返回对应编码器上下文 ...
  • H264裸数据格式

    2018-01-24 10:25:22
    H264标准进行压缩后形成的数据格式。 极力推荐这个blog,深入浅出理解视频编码H264结构讲解得非常清楚。
  • H.264编码基本原理 为达到良好的编码效率及性能,H.264编码器采用的仍是变换和预测的混合编码法,其完整的编码过程如图所示。 在H.264编码标准中,输入的帧或场Fn是以宏块为单位进行处理的,采样后的视频图像都被...
  • H264是当今流行的视频压缩格式;ffmpeg是一个开源库,实现了对h264视频文件的解压缩。 为了降低使用ffmpeg的复杂性,尽量隐藏实现细节,我写了一个封装库。c#也可以很方便的使用此库。解压后的数据可以为yuv格式,...
  • 本程序在S3C6410开发板上测试都是可以用的,CMOS摄像头用的是OV9650,视频采集使用V4L2视屏设备驱动接口,设置采样格式为YUV420,然后进行MFC硬件的H264编码,得到H264格式的视频图像.
  • H264压缩码率与GOP

    2020-12-24 13:13:54
    H264压缩比 条件:1、YUV格式YUV420 2、分辨率为640X480 3、帧率为 15 建议码流: 500kbp 压缩比:1/100 GOP 帧进行分组:根据相关性进行分组。 同组帧相关性强,可压缩编码性强 I/P/B 帧 I 帧:...
  • DivX Plus H264官方中文版 它可以帮助你将所珍藏的高清视频资源...H264编码基于MPEG-4标准,可以将MPEG-2格式的视频文件压缩至原来的10%,更可把VHS格式录像带格式的文件压至原来的1%。无论是声音还是画质都可以和
  • 问题3、在jni里写本地文件,路径为char filename_out[] = "/storage/emulated/0/yourname.h264"; JAVA public class MainActivity extends Activity implements Camera.PreviewCallback, ...
  • 使用FFMPEG库采集V4L2数据,然后压缩H264数据格式,详细见博客 http://blog.csdn.net/li_wen01/article/details/67638454
  • h264视频与pcm音频合成MP4视频格式

    千次阅读 2018-12-27 18:20:49
    H.264压缩过的数据,PCM是原始数据,MP4是一种视频封装格式。实际H.264与PCM不能直接合成MP4格式,因为音频格式不对。这里需要中间对音频做一次压缩处理。基本流程为:将PCM音频数据压缩成AAC格式音频数据,再将...
  • H.264 视频格式

    2020-02-24 12:06:17
    H.264 是 MPEG-4的第十部分,是由ITU-T视频编码专家组(国际电信联盟)(VCEG)和ISO/IEC动态图像专家组(国际标准化组织)(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的一种高度压缩数字视频编解码器...
  • tiny4412采集YUYV422格式图像数据,通过硬件FIMC转码为NV12,最后通过MFC进行硬件H264压缩。生成YUV420文件和h264文件。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 667
精华内容 266
关键字:

压缩格式h264