即时通讯音视频开发编码H.264的特点与优势

news2024/11/25 14:44:12

即时通讯应用中的实时音视频技术,几乎是IM开发中的最后一道高墙。原因在于:实时音视频技术 = 音视频处理技术 + 网络传输技术 的横向技术应用集合体,而公共互联网不是为了实时通信设计的。

 

国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-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。

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一方的称呼。

H264标准的主要特点如下:

    更高的编码效率:
    同H.263等标准的特率效率相比,能够平均节省大于50%的码率。
    高质量的视频画面:
    H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点。
    提高网络适应能力:
    H.264可以工作在实时通信应用(如视频会议)低延时模式下,也可以工作在没有延时的视频存储或视频流服务器中。
    采用混合编码结构:
    同H.263相同,H.264也使用采用DCT变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4x4二维整数变换等新的编码方式,提高了编码效率。
    H.264的编码选项较少:
    在H.263中编码时往往需要设置相当多选项,增加了编码的难度,而H.264做到了力求简洁的“回归基本”,降低了编码时复杂度。
    H.264可以应用在不同场合:
    H.264可以根据不同的环境使用不同的传输和播放速率,并且提供了丰富的错误处理工具,可以很好的控制或消除丢包和误码。
    错误恢复功能:
    H.264提供了解决网络传输包丢失的问题的工具,适用于在高误码率传输的无线网络中传输视频数据。
    较高的复杂度:
    264性能的改进是以增加复杂性为代价而获得的。据估计,H.264编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

 

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

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

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

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

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压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。

H.264 草案中包含了用于差错消除的工具,便于压缩视频在误码、丢包多发环境中传输,如移动信道或IP信道中传输的健壮性。

为了抵御传输差错,H.264视频流中的时间同步可以通过采用帧内图像刷新来完成,空间同步由条结构编码(slice structured coding)来支持。同时为了便于误码以后的再同步,在一幅图像的视频数据中还提供了一定的重同步点。另外,帧内宏块刷新和多参考宏块允许编码器在决定宏块模式的时候不仅可以考虑编码效率,还可以考虑传输信道的特性。

除了利用量化步长的改变来适应信道码率外,在H.264中,还常利用数据分割的方法来应对信道码率的变化。从总体上说,数据分割的概念就是在编码器中生成具有不同优先级的视频数据以支持网络中的服务质量QoS。例如采用基于语法的数据分割(syntax-based data partitioning)方法,将每帧数据的按其重要性分为几部分,这样允许在缓冲区溢出时丢弃不太重要的信息。还可以采用类似的时间数据分割(temporal data partitioning)方法,通过在P帧和B帧中使用多个参考帧来完成。

在无线通信的应用中可以通过改变每一帧的量化精度或空间/时间分辨率来支持无线信道的大比特率变化。可是,在多播的情况下,要求编码器对变化的各种比特率进行响应是不可能的。因此,不同于MPEG-4中采用的精细分级编码FGS(Fine Granular Scalability)的方法(效率比较低),H.264采用流切换的SP帧来代替分级编码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计SSM基于Java的运动健身平台(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

博客网页设计制作 简单静态HTML网页作品 DIV CSS个人网页作业成品 dreamweaver学生个人博客网站模板

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

Mentor-dft 学习笔记 day42-ASCII File Format(2)

FORCE “primary_input_pin” <value> <time>; 此命令用于在给定时间强制选定主输入引脚上的值&#xff08;0,1、X或Z&#xff09;。时间值不得低于该程序的先前时间值。每个程序的时间在时间0再次开始。主输入引脚将用双引号括起来。APPLY “scan_group_procedure…

高通Ride软件开发包使用指南(10)

高通Ride软件开发包使用指南&#xff08;10&#xff09;7 平台管理任务7.1 连接到控制台7.1.1 串口连接SOC1和SOC27.1.2 识别 SOC1 或 SOC 27.1.3 识别平台构建7.1.4 串口连接SA9000P7.1.5 通过串口连接到 Aurix7.2 在 SIP1 和 SIP2 上为 SA8xxxP 分配 IP 地址7.2.1 分配静态 I…

【数据预处理机器学习】对于薪资数据的倾斜情况以及盒图离群点的探究

文章目录一.需求背景二. 任务开始2.1 薪酬的中位数、均值和众数和数据倾斜模块详细设计2.2 按不同的类别划分职位中的薪酬数据&#xff0c;画盒图/箱线图&#xff0c;检查孤立点/离群点一.需求背景 课题中心&#xff1a;招聘网站的职位招聘数据预处理 之前的文章&#xff0c;…

【JAVA】final关键字

&#x1f3c6;今日学习目标&#xff1a;final关键字 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人主页&#xff1a;颜颜yan_的个人主页 ⏰本期期数&#xff1a;第一期 &#x1f389;专栏系列&#xff1a;JAVA 文章目录前言final关键字final关键字修饰类示例&#xff1a;fin…

[附源码]Python计算机毕业设计高校社团管理平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

笔试强训(四十五)

目录一、选择题二、编程题2.1 查找兄弟单词2.1.1 题目2.1.2 题解一、选择题 &#xff08;1&#xff09;IP数据报分片的重组通常发生在&#xff08;D&#xff09; A.源主机和数据经过的路由器上 B.源主机上 C.数据报经过的路由器上 D.目的主机上 数据分片是网络层发现上层给的数…

Java反射(通俗易懂!)

文章目录2.反射2.1反射的概述2.2 获取 Class类对象的三种方式2.3反射获取构造方法并使用2.3.1Class 类获取构造方法对象的方法2.3.2Constructor类用于创建对象的方法2.3.3小结2.4反射获取成员变量并使用2.4.1Class类获取成员变量对象的方法2.4.2Field类用于给成员变量赋值的方法…

木字楠后台管理系统开发(5):Vue登陆界面编写以及与后台联调测试

&#x1f3b6; 文章简介&#xff1a;木字楠后台管理系统开发(5)&#xff1a;Vue登陆界面编写以及与后台联调测试 &#x1f4a1; 创作目的&#xff1a;为了带大家完整的体验木字楠后台管理系统模版的开发流程 ☀️ 今日天气&#xff1a;愿冷空气冷藏你的烦恼,让快乐永驻。 &…

PaddleX API开发模式快速上手文档

目录一. 环境安装1.1 PaddlePaddle-gpu安装1.2 PaddleX安装二. 快速训练2.1 准备数据集2.2 定义图像预处理与数据增强2.3 定义并装载数据2.4 开始训练2.5 使用Visual查看训练情况三. 部署推理3.1 模型加载预测PaddleX官方文档(以图像分类为例)&#xff1a;PaddleX/docs/quick_s…

MySQL索引优化(一)

文章目录一、索引介绍1. 什么是MySQL的索引2. 索引数据结构3. 索引优势4. 索引劣势5. 索引使用场景&#xff08;1&#xff09;需要建立索引的场景&#xff08;2&#xff09;不推荐建立索引的场景6. 索引分类&#xff08;1&#xff09;主键索引&#xff08;2&#xff09;唯一索引…

【k8s 实战】Prometheus Operator 高级配置- 监控Kubernetes自动发现

上文我们一起学习了如何在 Prometheus Operator 下面自定义一个监控选项&#xff0c;以及自定义报警规则的使用。那么我们还能够直接使用前面课程中的自动发现功能吗&#xff1f;如果在我们的 Kubernetes 集群中有了很多的 Service/Pod&#xff0c;那么我们都需要一个一个的去建…

MATLAB傅里叶变换和加入噪声后的傅里叶变换

1.傅里叶变换代码 查看String为傅里叶变换的button添加callback函数&#xff0c;可以通过查看callback函数快速定位到该位置 function pushbutton37_Callback(hObject, eventdata, handles)%傅里叶变换&#xff08;频谱图&#xff09; axes(handles.show_proImg); global fpat…

[附源码]Nodejs计算机毕业设计基于的二手房交易系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

动态规划——状态机模型

文章目录概述大盗阿福思路代码股票买卖 IV思路代码股票买卖 V思路代码总结概述 定义&#xff1a; 它是一个有向图形&#xff0c;由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。每个事件都在属于“当前” 节点的转移函数的控制范围内&#xff0c;其…

QT 6开发环境搭建——Windows环境

QT 目前不支持离线安装&#xff0c;只支持在线安装。&#xff08;从Qt5.15版本后不支持离线安装&#xff09; 去下面的网址&#xff0c;下载在线安装包&#xff1a; https://download.qt.io/archive/online_installers 我个人选择的是4.3.可以选择更新的版本。选择合适自己电…

时间序列的蒙特卡罗交叉验证

交叉验证应用于时间序列需要注意是要防止泄漏和获得可靠的性能估计本文将介绍蒙特卡洛交叉验证。这是一种流行的TimeSeriesSplits方法的替代方法。 时间序列交叉验证 TimeSeriesSplit通常是时间序列数据进行交叉验证的首选方法。下图1说明了该方法的操作方式。可用的时间序列…

编译原理实验三:算符优先分析算法的设计与实现(python)

实验目的 根据算符优先分析法&#xff0c;对表达式进行语法分析&#xff0c;使其能够判断一个表达式是否正确。通过算符优先分析方法的实现&#xff0c;加深对自下而上语法分析方法的理解。 实验内容 1、输入文法。可以是如下算术表达式的文法&#xff08;你可以根据需要适当…

赋能组织执行力学习-R4管理-结果体系、责任体系、检查与改进体系、及时激励体系

本文向大家介绍R4管理&#xff0c;是由结果体系&#xff08;Result&#xff09;、责任体系&#xff08;Responsibility&#xff09;、检查与改进体系&#xff08;Review&#xff09;、及时激励体系&#xff08;Reward&#xff09;组成&#xff0c;帮助我们如何更好的运用。 马云…