音视频入门知识学习

news2024/11/25 3:00:28

音视频入门知识学习

  • 视频相关
    • 视频压缩
      • 空间冗余
      • 时间冗余
      • 视觉冗余
      • 信息熵冗余
      • 知识冗余
    • I帧 P帧 B帧 压缩思路
      • I帧
      • P帧
      • B帧
  • H.264
    • VCL
    • NAL
    • NAL(片(宏块))
  • 音频概念
    • 采样和采样频率
    • 采样位数
    • 声道
    • 码率
    • 声音与音频
      • 数字音频相关特点
      • 时域冗余
      • 频域冗余的表现形式
      • 听觉冗余

视频相关

1920x1080的屏幕,32位,30帧的fps。一秒钟需要1920108032*30字节,所以需要压缩

视频压缩

压缩的核心思想就是去除冗余信息

空间冗余

空间冗余 == 相邻像素重复:图像内部相邻像素之间存在较强的相关性多造成的冗余

比如一张图片中间的一个位置大小20x20,它的表现肉眼看起来其实是一样的,这种直接取一小块+空间位置代表来描述就行,节省了内存。
看起来非常高端:这就是算法工程师的牛逼之处。

时间冗余

时间冗余 == 帧之间差值:视频图像序列中的不同帧之间的相关性所造成的冗余。
这个最好理解:当前帧图像跟上一帧图像之间只是改变了很小的东西,那么我们只要把改变的东西和位置传递过去,再根据上一帧进行对比处理就可以了。

视觉冗余

视觉冗余 == 人类不敏感的颜色:深红色和浅红色OK,但是红色偏一点橘红色,你分得清楚吗?
视觉冗余:是值人眼不能感知或不铭感的那部分图像信息。
色盲:人类对色度不敏感
亮盲:人类对亮度敏感

信息熵冗余

信息熵冗余 == 熵编码-哈夫曼算法
也称编程冗余,人们用于表达某一信息序所需要的比特数总比理论上标识改信息所需要的最少比特数要大,它们之间的差距就是信息熵冗余,或称编码冗余。

知识冗余

知识冗余 == 人类(头 身体 腿),汽车,房子
指在有些图像中还包含与某些验证知识有关的信息
有些东西是不需要记录的:比如人, 眼睛下面是鼻子再下面的嘴巴

I帧 P帧 B帧 压缩思路

I帧

I帧:帧内编码帧,关键帧,I帧可以看做一个图形经过压缩之后的产物,可以单独解码出一个完整的图形。(压缩率最低)

P帧

P帧:前后预测编码帧,记录了本帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面加上本帧定义的差别,最终生成画面。

B帧

B帧:双向预测编码帧,记录了本帧与前后帧的差别,解码需要参考前面一个I帧或P帧,同时也需要后面的P帧才能解码一张完整的图像。(参考前后的预测得到的,压缩率最高,但是耗时。)
在这里插入图片描述
B帧,拥有I帧和后面P帧的所有东西,但是它自己只记住了中间的圆,想要完全绘制出来必须参考前后的帧。

H.264

H.264 和 MPEG AVC 是同一个东西,不同组织的叫法而已。
H.265 是一种更高效率的编码格式,在H.264的基础上假如了更多的算法,压缩率更高,涉及到一些专利问题和推广问题,目前还是没流行起来。

H.264 分层结构(VCL 与 NAL)

VCL就是被压缩编码后的原始数据,在VCL数据封装到NAL单元中之后,才可以用于传输。

Java开发中:数据->javaBean -> json(序列化或者反序列化)-> http -> TCL
音视频开发中:图片(视频)-> VCL(进行编码压缩) -> NAL(打包) -> http -> TCL

VCL

vcl :video coding layer,视频编码层 : 负责高效的视频内容标识,VCL数据即编码处理的输出,它表示被压缩编码后的数据序列。

NAL

NAL(Network Abstraction Layer,网络提取层):负责以网络所要求的恰当的方式数据进行打包和传送,是传输层。不管是本地播放还是网络播放,都要通过这一层来传输。

NAL(片(宏块))

一帧图片经过H.264编码器之后,NAL单元就是装在着这些片(被编码为一个或多个片slice),
每片包含整数个宏块(至少一个宏块,最多包含整个图像宏块)。
在这里插入图片描述
一般H.264编码器的默认输出为:起始码+NALU(Nal单元)。起始码为:0x00000001或者0x000001

一个NALU(PPS, I帧,B帧,P帧)
原始数据经过VCL编码之后再经过NAL打包就变成一个个NALU单元,所有数据流都要经过NAL打包

startcode Nal头信息 aa = 起始码 +RBSP == NALU
排列形式为:aaRBSP aaRBSP aaRBSP aaRBSP

为什么起始码是上面写的这两种?
0x00000001 代表一个NALU里面有好多片
0x000001 代表一个NALU里面一个片就可以搞定

每个NALU 包含起始码与1个字节的Nal Header 与 若干整数字节的负荷数据EBSP构成。

Nal Header:能区分类型,I 、B、P、PPS等数据

NAL类型查表:在这里插入图片描述
在这里插入图片描述
使用软件打开上面的h264文件会发现:

从开始位置开始:
起始码:有多个片00 00 00 01 Nal Head:67
SPS 序列参数集(记录有多少I帧、B帧、P帧,帧是如何排列的) 7
0x67 十六进制的写法 67
二进制:0 11 00111
第一组:0代表这个帧可以用,1代表这个帧不可以用
第二组:11代表这个帧很重要
第三组:00111 —> 16进制 7 查表 SPS

后面就是数据了,直到下一个起始码开始就是下一个NALU

pps 图像参数集(图像宽高信息等)8
00 00 00 01 68 ----> 2进制01101000----> 取低五位 00001000 —> 十六进制 0x08

SEI补充信息单元(可以记录坐标信息,人员信息,可以理解是自定义的信息)
00 00 00 01 06

I帧来了
00 00 01 65

不太重要的P帧来了 第二组是:01
00 00 01 45

还有这种:第二组是11
重要的P帧
00 00 00 01 61

B帧
00 00 00 01 01

真正开发中:一般分析:SPS,PPS,I帧

PTS与DTS

DTS表示解码时间戳,在什么时候解码这一帧的数据

PTS表示显示时间戳,在什么时候显示这一帧

在没有B帧的情况下,DTS和PTS的输出顺序是一样的

因为B帧打乱了解码和显示的顺序,所以一旦存在B帧,PTS和DTS就会不同。


解码顺序和播放顺序不是相同的,I帧之间分为一组,叫GOP。

为什么要打乱顺序呢,比如有1234567帧,扫描发现1352765这样排列才是最合适的,因为他们之间的画面关联性最高,压缩率更高,相同的块更多,可以省下更多的描述,所以就这样排列了,但是播放顺序就不是这个编码解码顺序。
要知道一帧的视频分为很多块,有16x16,8x8,等等区间,H.264为什么效率更高,因为它提供了更多种类的块的描述,更加精细化,简单说就是算法更好,压缩率更高。
H.264结构中,一个视频图像编码后的数据叫做一帧,一帧由一个片(slice)或多个片组成,一个片由一个或多个宏块(MB)组成,一个宏块由16x16的YUV数据组成(还有子块),宏块作为H.264编码的基本单位。

音频概念

采样和采样频率

⼀秒钟内采样的次数称为采样频率。采样频率越⾼,越接近原始信号,但是也加⼤了运算处理的复杂度。根据 Nyquist采样定理,要想重建原始信号,采样频率必须⼤于信号中最⾼频率的两倍。⼈能感受到的频率范围为 20HZ–20kHZ, ⼀般⾳乐的采样频率为44.1kHZ, 更⾼的可以是48kHZ和96kHZ,不过⼀般⼈⽤⽿听感觉不出差别 了。语⾳主要是以沟通为主,不需要像⾳乐那样清晰,⽤16k采样的语⾳就称为⾼清语⾳了。现在主流的语⾳采样 频率为16kHz。

采样位数

数字信号是⽤0和1来表示的。采样位数就是采样值⽤多少位0和1来表示,也叫采样精度,⽤的位数越多就越接近 真实声⾳。如⽤8位表示,采样值取值范围就是-128–127,如⽤16位表示,采样值取值范围就是-32768–32767。 现在⼀般都⽤16位采样位数。

声道

声道是指处理的声⾳是单声道还是⽴体声。Android⽀持双声道⽴体声和单声道。CHANNEL_IN_MONO单声道, CHANNEL_IN_STEREO⽴体声。单声道在声⾳处理过程中只有单数据流,⽽⽴体声则需要左、右声道的两个数据 流。显然,⽴体声的效果要好,但相应的数据量要⽐单声道的数据量加倍。

码率

就是⽐特率。⽐特率是指每秒传送的⽐特(bit)数。 ⾳频采集和播放: ⼀般⽤专⻔的芯⽚(通常叫codec芯⽚)采集⾳频,做AD转换,然后把数字信号通过I2S总线(主流⽤I2S总线, 也可以⽤其他总线,⽐如PCM总线)送给CPU处理(也有的会把codec芯⽚与CPU芯⽚集成在⼀块芯⽚中)。当要 播放时CPU会把⾳频数字信号通过I2S总线送给codec芯⽚,然后做DA转换得到模拟信号再播放出来。

声音与音频

声音转成模拟信号,可以把声音认为是一种能量,通过震动,磁电转换,记录刻痕。

声音通过人耳鼓膜,通过震动幅度和震动频率给听觉神经传递反映给大脑。

数字信号:声音能转换产生微弱的电流,有频率有大小等要素,科学家通过一定的算法能转换成类似我们看到的波形具体的事物。

音频信号能进行压缩的依据是音频压缩技术。
  音频压缩技术指的是对原始数字音频信号流(PCM编码)运用适当的数字信号处理技术,在不损失有用信息量,或所引入损失可忽略的条件下,降低(压缩)其码率,也称为压缩编码。它必须具有相应的逆变换,称为解压缩或解码。音频信号在通过一个编解码系统后可能引入大量的噪声和一定的失真。

在音频压缩领域,有两种压缩方式,分别是有损压缩和无损压缩。常见到的MP3、WMA、OGG被称为有损压缩,有损压缩顾名思义就是降低音频采样频率与比特率,输出的音频文件会比原文件小。
另一种音频压缩被称为无损压缩,也就是所要说的主题内容。无损压缩能够在100%保存原文件的所有数据的前提下,将音频文件的体积压缩的更小,而将压缩后的音频文件还原后,能够实现与源文件相同的大小、相同的码率。
无损压缩格式有APE、FLAC、WavPack、LPAC、WMALossless、AppleLossless、La、OptimFROG、Shorten,而常见的、主流的无损压缩格式只有APE、FLAC。

数字音频相关特点

数字音频的质量取决于:采样频率和量化位数这两个参数,为了保真在时间变化方向上取样点尽量密,取样频率要高;在幅度取值上尽量细,量化比特率要高,直接的结果就是存储容量及传输信道容量要求的压力
  音频信号的传输率=取样频率样本的量化比特数通道数取样频率=441KHz
  样本值的量化比特数=16
  普通立体声的信号通道数=2
  数字信号传输码流大约14Mbit/s
  一秒钟的数据量为14Mbit/(8/Byte)
  达1764 k byte(字节),等于88200个汉字的数据量
  数字音频的出现,是为了满足复制、存储、传输的需求,音频信号的数据量对于进行传输或存储形成巨大的压力
  音频信号的压缩是在保证一定声音质量的条件下,尽可能以最小的数据率来表达和传送声音信息
  信号压缩过程是对采样、量化后的原始数字音频信号流运用适当的数字信号处理技术进行信号数据的处理,将音频信号中去除对人们感受信息影响可以忽略的成分,仅仅对有用的那部分音频信号进行编排,从而降低了参与编码的数据量。

数字音频信号中包含的对人们感受信息影响可以忽略的成分称为冗余,包括时域冗余、频域冗余和听觉冗余。

时域冗余

1)幅度分布的非均匀性
  信号的量化比特分布是针对信号的整个动态范围而设定的,对于小幅度信号而言,大量的比特数据位被闲置。
  2)样值间的相关性
  声音信号是一个连续表达过程,通过采样之后,相邻的信号具有极强的相似性,信号差值与信号本身相比,数据量要小的多
  3)信号周期的相关性
  声音信息在整个可闻域的范围内,每个瞬间只有部分频率成分在起作用,即特征频率,这些特征频率会以一定的周期反复出现,周期之间具有相关关系
  4)长时自我相关性
  声音信息序列的样值、周期相关性,在一个相对较长的时间间隔也会是相对稳定的,这种稳定关系具有很高的相关系数
  5)静音
  声音信息中的停顿间歇,无论是采样还是量化都会形成冗余,找出停顿间歇并将其样值数据去除,可以减少数据量。

频域冗余的表现形式

1)长时功率谱密度的非均匀性
  任何一种声音信息,在相当长的时间间隔内,功率分布在低频部分大于高频部分,功率谱具有明显的非平坦性,对于给定的频段而言,存在相应的冗余
  2)语言特有的短时功率谱密度
  语音信号在某些频率上会出现峰值,而在另一些频率上出现谷值,这些共振峰频率具有较大的能量,由它们决定了不同的语音特征,整个语言的功率谱以基音频率为基础,形成了向高次谐波递减的结构

听觉冗余

根据分析人耳对信号频率、时间等方面具有有限分辨能力而设计的心理声学模型,将通过听觉领悟信息的复杂过程,包括接受信息,识别判断和理解信号内容等几个层次的心理活动,形成相应的连觉和意境
  由此构成声音信息集合中的所以数据,并非对人耳辨别声音的强度、音调、方位都产生作用,形成听觉冗余
  由听觉冗余引出了降低数据率,实现更高效率的数字音频传输的可能

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

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

相关文章

Redis高可用——哨兵模式

Redis——哨兵模式 一、Redis 哨兵模式1.哨兵模式的作用2.故障转移机制3.主节点的选举 二、搭建Redis 哨兵模式1.修改 Redis 哨兵模式的配置文件(所有节点操作)2.启动哨兵模式3.查看哨兵信息4.故障模拟5.验证结果 一、Redis 哨兵模式 主从切换技术的方法…

【网络原理之一】应用层协议、传输层协议UDP和TCP,TCP的三次握手和四次挥手以及TCP的可靠和效率机制

应用层协议XML协议JSONHTTP 传输层协议UDP协议UDP的特点UDP协议格式 TCP协议TCP的特点TCP协议格式TCP的安全和效率机制确认应答(可靠机制)超时重传(可靠机制)连接管理(可靠机制)三次握手(连接过程)四次挥手(断开的过程)状态的转化 滑动窗口(效率机制)流量控制(可靠机制)拥塞控制…

遥感云大数据在灾害、水体与湿地领域典型案例及GPT模型

详情点击链接:遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型 第一:基础 一:平台及基础开发平台 GEE平台及典型应用案例; GEE开发环境及常用数据资源; ChatGPT、文心一言等GPT模型 JavaScript基础&am…

企业如何认识数字化及数字化战略

随着信息和通信技术的发展,数字技术在各个领域广泛应用并深入影响生活、工作和社会的时代。在这个时代里,数字技术不仅改变了我们与世界互动的方式,还催生了全新的商业模式、服务和机会。 数字化时代的关键特征包括: 数字技术的…

Flutter开发微信小程序实战:构建一个简单的天气预报小程序

微信小程序是一种快速、高效的开发方式,Flutter则是一款强大的跨平台开发框架。结合二者,可以轻松地开发出功能丰富、用户体验良好的微信小程序。 这里将介绍如何使用Flutter开发一个简单的天气预报小程序,并提供相应的代码示例。 1. 准备工…

2023年最新Java八股文面试题,面试应该是够用了(吊打面试官)

前言大家先看一下互联网大厂各职级薪资对应表(技术线),看看你想到哪个级别去! 每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技…

小型企业如何进行高效的文档数据管理?

关键词:知识文档管理系统、群晖NAS、数据安全 我国小型企业数量占全国总数的98%以上,但企业在文档数据管理方面存在诸多问题。比如:文档管理混乱、文档共享不便利、传统的FTP传输文件文档安全难以保障等。 但由于市面上的文档管理产品价格高昂…

思科Cisco C9200交换机端口调配

前言 最近DNAC和交换机等网络设备之间的同步出现问题,在思科的BUG库里找到了相关信息,DNAC2.2.3.6版本的BUG,导致交换机端口的调配无法成功部署推送。但是因为业务的需求,需要对交换机进行端口调配。其和华为/华三的逻辑一致&…

让你不再好奇音频转换格式软件免费有哪些

小美:你好,最近我需要将一些音频文件转换成其他格式,但是不知道常用的音频转换工具有哪些,你有什么建议吗? 李明:当然,有很多音频转换工具可以选择。建议你关注下这篇文章,我将通过…

Bluez HCI Commands

在 lib/Hci.h 头文件中定义了很的我 HCI Commands,这些命令是分组的,每个组下面又提供了具体的命令,如: 其中 OGF 为 OpCode Group Flag,表明命令级别 OCF 为 OpCode Command Flag,表明要执行的命令 Hci…

泰迪智能科技基于产业技能生态链学生学徒制的双创工作室--促进学生高质量就业

据悉,6月28日,广东省人力资源和社会保障厅在广东岭南现代技师学院举行广东省“产教评”技能生态链建设对接活动。该活动以“新培养、新就业、新动能”为主题,总结推广“产教评”技能人才培养新模式,推行“岗位培养”学徒就业新形式…

【无标题】用Javascript编写魔方程序(详解)2023-7-4

第一步&#xff0c;先初始化魔方&#xff0c;如上图&#xff0c;可以很直观的看到魔方的6个面。直接贴代码 <!doctype html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initia…

微信小程序之Image那些事

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、使用场景二、使用方式1.动态读取image大小2.动态设置style3.动态赋值 总结 前言 小程序中 Image使用频率是非常高的 不同场景下 Image使用的属性也不一样 …

中级保育员专业知识卫生管理考试题库及答案

本题库是根据最新考试大纲要求&#xff0c;结合近年来考试真题的重难点进行汇编整理组成的全真模拟试题&#xff0c;考生们可以进行专项训练&#xff0c;查漏补缺巩固知识点。本题库对热点考题和重难点题目都进行了仔细的整理和编辑&#xff0c;相信考生在经过了针对性的刷题练…

【Redisson】Redisson--话题(订阅分发)

Redisson系列文章&#xff1a; 【Redisson】Redisson–基础入门【Redisson】Redisson–布隆(Bloom Filter)过滤器【Redisson】Redisson–分布式锁的使用&#xff08;推荐使用&#xff09;【分布式锁】Redisson分布式锁底层原理【Redisson】Redisson–限流器、【Redisson】Redi…

你知道ai绘画以图生图软件怎么使用吗?

小美&#xff1a;嗨&#xff0c;张华&#xff0c;你听说过这个令人难以置信的新技术“以图生图ai绘画”吗&#xff1f;它简直让人惊叹&#xff01; 张华&#xff1a;没有&#xff0c;我还没有听说过。什么是以图生图ai绘画&#xff1f; 小美&#xff1a;你看这些美丽的照片&a…

Apikit 自学日记:创建自动化测试项目

在API 自动化测试中&#xff0c;所有的测试用例都是以项目维度来进行管理&#xff0c;一个自动化测试项目可以从多个API文档项目中引用API信息来创建API测试用例。 点击左侧菜单栏&#xff0c;进入 API自动化测试 项目列表页&#xff0c;点击添加按钮&#xff1a; 在弹窗中输入…

六大排序——(插入、希尔、选择、交换、归并、计数)

目录 一、插入排序 二、希尔排序 三、选择排序 1&#xff09;直接选择排序&#xff1a; 2&#xff09;堆排序 四、交换排序 1&#xff09;冒泡排序 2&#xff09;快速排序 1、Hoare版 2、挖坑法 3、前后指针 快排优化 快速排序非递归来实现 快排总结 五、归并排…

Spring整合Junit单元测试

1.Spring整合Junit单元测试 1.1 原始Junit测试Spring的问题 在测试类中&#xff0c;每个测试方法都有以下两行代码&#xff1a; ApplicationContext ac new ClassPathXmlApplicationContext("application.xml");BookDao bookDao (BookDao)ac.getBean("bookDa…

环二肽试剂:Cyclo(D-Tyr-D-Phe),对A549细胞具有抗tumor活性

英文名称&#xff1a;Cyclo(D-Tyr-D-Phe)产品结构式&#xff1a; 产品规格&#xff1a; 1.CAS号&#xff1a;N/A 2.分子式&#xff1a;C18H18N2O3 3.分子量&#xff1a;310.35 4.包装规格&#xff1a;1g、5g、10g&#xff0c;包装灵活 5.外观颜色&#xff1a;固体/粉末 6.溶解条…