音视频开发之音频基础知识!

news2025/7/9 0:22:16

前言:

在音视频开发中,音频也是一个重要功能之一。在音频开发中有两个重要的概念,一个是PCM数据格式,另外一个是AAC数据格式。下面我们会重点介绍!

一、PCM重要音频参数:

PCM数据也被称之为脉冲编码调制数据,也指的是音频未经过压缩的原始数据。它是由模拟信号通过采样、编码、量化等步骤转换成标准的数字信号。

1、PCM数据的存储格式:

903b7c29e21de6fdc15b3b8d5e93383a.png

通常来说,声道的存储一般有两种形式,一种是Paketed另外一种是Planner。Packeted方式指的是交错存储,Planar指的是分开存储。如下:

  • Packeted: L R L R L R L R

  • Planar:L L L L L R R R

2、采样率:

采样率指的是声音每秒中采样点的个数,比方说采样率48000就相当于每秒有48000次采样,在日常开发中有几个常见的采样率: 22000HZ(22KHZ)、44100HZ(44.1KHZ)、48000HZ(48KHZ)、96000(96KHZ)、192000(192KHZ)。

3、采样深度:

采样深度指的是每个采样点的大小。通常来说,常用的采样深度是24bit、16Bit、8bit。

4、通道数:

通道数常见有包括单通道、双通道、四声道等。这个很好理解,就是有几路通道,更直白的说,和我们平时走路一样,有几条路可以选择!

5、比特率:

比特率指的是PCM原始音频数据每秒传输的位数(bit)。对于PCM数据来说,比特率的计算公式 = 采样率 * 采样深度 * 通道数。

6、PCM数据的大小计算:

假设我们采集一段10分钟大小的PCM数据,采样率48000、采样深度8bit、采样2通道。那它的大小计算是:

48000*8*2*10*60/8/1024/1024 = 54M

二、AAC数据的重要参数:

说完PCM数据的参数后,我们再来了解一下另外一个重要的音频格式: AAC格式:AAC也称之为高级高级压缩编码格式,它是基于mpeg-2的一种音频压缩格式,目前这种音频格式广泛运用在网络通信、视频语音、在线广播等领域。AAC的优势在于压缩比更大并且音质更佳,AAC的压缩比可以达到20:1,这使得在网络传输中有着广泛的运用。

1、AAC格式的讲解:

AAC格式分为两种:一种是ADIF格式,另外一种是ADTS格式。ADIF格式的特点是:只有一个头部信息,后面都是AAC裸流数据,这种格式通常运用在磁盘播放和文件存储;而另外一种ADTS格式的特点是:每一帧数据 = adts header(AAC头部) + aac es(AAC裸流数据),这种格式适合在流媒体进行播放。下面我们重点来看看ADTS的结构:

我们先来看看adts header,adts header由两部分组成,一个是adts_fix_header,另外一个是adts_variable_header。如下图所示:

ffa1cd361711e16278358e5865def58f.png
  • adts_fix_header的结构如下:

bacfe4448acca9a95304351357d3a780.png
syncword: 同步字节,说明一个adts的开始
  
  ID MPEG:标识符,设置为1
  
  layer:默认为00
  
  protction_absent:表示是否误码校验
  
  profile:AAC等级(下面这个是AAC等级)
65c22e3e49415f7443d4a640162c19be.png
sample_frequence_index: 采样率下标
2d20406025a658d8c2214a3e41f6e5f1.png
chennel_configure: 声道数
  
  frame_length:一个adts的长度
  • adts_variable_header的结构如下:

2b5fe88dc69f8dc660f601c60fb7327d.png
frame_length:adts的长度
adts_buffer_fullness:默认值是0x7FF,代表的是码率可变
number_of_raw_data_blocks_in_frame:代表的是ADTS帧有number_of_raw_data_blocks_in_frame  + 1个

最后:

对嵌入式音频开发感兴趣的朋友,可以加入星球来学习,课程内容说明如下:

ai识别加音视频推流实战项目进度,整个项目从7份开始,前两部分的ai识别工程基本上已经讲解完了(还有人脸识别的工程代码会进行重新重构一篇),当然这里面等录制完了第三部分的音视频推流开发内容,还会对ai识别这部分做补充,比如说yolo或者ssd等算法模型的原理讲解,还有就是自己怎么去训练模型;目前已经开始在录制音视频推流开发的第三部分,已经录制了两个小节部分,第三部分的内容会多搞点,比如理论知识的讲解,然后再结合我们的推流代码工程,可以学习到mpp和ffmpeg,以及rtmp、srt等相关协议,还包括h264、h265的码流结构和编码结构等相关知识点,甚至还包括工作当中常遇见家的问题,比如说,音视频不同步的问题,同时最近又添加了最新的课程内容:

5677c33345a5751cba8d5eec561e2a0a.png 33491f7030453833ac6b6b99d9139372.png

课程都有视频教程讲解,包括有解答群:

303952703a0655eaa4fb3b8df4171357.png

最新课程内容更新:

ff7d664ed5ec4734a531c0e6adbf810a.png

可以直接扫码加入星球:

7f1324e928bfcf3d32a6bd909f8c57ef.jpeg

最后感谢大家的支持哈,加入了星球的朋友,记得加我微信:tu18879499804,我拉大家进解答群!

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

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

相关文章

什么是coms coms设置图解

对与经常玩电脑的朋友来说,对与BIOS、COMS可能有点陌生,对于经常修电脑的朋友来说COMS可能会经常接触,今天我们来简单的说下coms设置图解,什么是COMS呢?coms主要是用于存储BIOS设置程序的设置参数和数据,而BIOS程序是…

计算机网络——如何构造HTTP请求

构造HTTP请求的常见方式有,通过form表单标签来实现,通过ajax来实现,这两种是通过HTML/JS来实现的,还可通过java使用Socket来进行构造(本质就是根据不同的格式来解析字符串,处理请求)&#xff0c…

【调优】大数据常见 Join 的使用场景

【调优】大数据常见 Join 的使用场景 上次写了大表和大表 join 的调优方法,今天总结一下大数据常见的 Join 方法。 1.Shuffle Join 大数据采用的是分布式存储,一个表的数据会分散在各个节点。为了进行 join,通常都会进行 shuffle 操作&…

【无标题】好消息 突破:IM开源项目OpenIM采用wasm技术实现jssdk

OpenIM 客户端sdk用golang实现,同时采用sqlite存储本地聊天记录,通过gomobile生成sdk,供iOS Android 调用,达到了了一套代码多端复用的效果。最近融合wasm技术,让浏览器具备存储能力,本地聊天记录存储在浏览…

【2022-11-26】JS逆向之北京百姓网

提示:文章仅供参考,禁止用于非法途径! 文章目录前言一、页面分析二、验证码识别三、验证码获取四、总结前言 目标网站:https://beijing.baixing.com/zhengzu/?page40 一、页面分析 清除cookie,重新刷新网页&#xf…

学生个人html静态网页制作 基于HTML+CSS+JavaScript+jquery仿苏宁易购官网商城模板

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

第八章《Java高级语法》第4节:位运算经典应用举例

实际开发过程中,位运算有着相当广泛的应用,并且相对于算术运算,位运算的计算速度往往更快。本节就讲解一些使用位运算解决问题的经典例子。 8.4.1判断整数的奇偶性 按照传统的思路,判断一个整数的奇偶性是通过用这个数与2求模,看运算结果是否为0。其实使用位运算也能判断…

基于蚁群算法的车辆路径规划问题的研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

四、vue-cli 介绍与使用

一、单页面应用程序 1.1、什么是单页面应用程序 单页面应用程序(英文名:Single Page Application)简称SPA,顾名思义,指的是一个web网站中只有唯一的一个HTML页面,所有的功能与交互都在这唯一的一个页面内…

Python:函数使用

目录 一、函数的基本介绍 函数与方法的区别 函数的定义 二、函数返回值及传参的情况 test01 test02 test03 三、函数嵌套 test04 四、lambda表达式 test05 一、函数的基本介绍 函数与方法的区别 直接调用的是函数 通过对象点出来的是方法 print("hello"…

【Leetcode每日一题:882. 细分图中的可到达节点~~~单源最短路径Dijkstra算法】

题目描述 给你一个无向图(原始图),图中有 n 个节点,编号从 0 到 n - 1 。你决定将图中的每条边 细分 为一条节点链,每条边之间的新节点数各不相同。 图用由边组成的二维数组 edges 表示,其中 edges[i] […

Docker配置nginx

1.Docker安装nginx 安装的命令 sudo docker search nginx docker pull nginx查看是否安装 docker images运行测试nginx docker run --name nginx-test -p 9091:80 -d nginx --name #给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器 -p #映射端口…

Fedora-14源配置

By: Ailson Jack Date: 2022.11.26 个人博客:http://www.only2fire.com/ 本文在我博客的地址是:http://www.only2fire.com/archives/149.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。…

兆易创新GD32 (二)官方工程 Template 和 创建工程

官方例程位于标准库的目录下,详细路径如下 GD32F4xx_Firmware_Library_V3.0.0\GD32F4xx_Firmware_Library_V3.0.0\GD32F4xx_Firmware_Library\Template 文件目录清晰简单。值得注意的是system_gd32f4xx.c 位于CMSIS目录下 CMSIS简单理解ARM公司的统一软件命名规则C…

Spring Security 中的 RememberMe 登录,so easy!

1. RememberMe简介 RememberMe 这个功能非常常见,图 6-1 所示就是 QQ 邮箱登录时的“记住我”选项。 提到 RememberMe,一些初学者往往会有一些误解,认为 RememberMe 功能就是把用户名/密码用 Cookie 保存在浏览器中,下次登录时不…

11.25总结

目录 一.做题总结 1.约瑟夫问题 2.最近请求次数 4.选择题订正 二.最长字符串 三.最长数组问题 一.做题总结 1.约瑟夫问题 我的思路就是先遍历按队员编号添加按顺序初始化每个人的编号. 就建立循环,终止条件就是大小为1 进入每次叫号的循环.让编号不为1的全部移出去 因…

尚硅谷axios笔记——入门学习

这篇笔记不包括源码分析,呜呜感觉时间不够用了还得留时间准备教资面试 axios理解和使用 json-server服务与搭建 终端安装npm i -g json-server 启动服务 json-server --watch db.json 启动在当前文档前 数据去db.json找 查看id为2的页面在http://localhost:3000.…

Linux下调试方法汇总

一、Linux驱动调试方法 Linux驱动调试主要有以下几种方法: 1、利用printk。 2、查看OOP消息。 3、利用strace。 4、利用内核内置的hacking选项。 5、利用ioctl方法。 6、利用/proc 文件系统。 7、使用kgdb。 1.1、printk 这是驱动开发中最朴实无华,同时…

使用 Lambda 表达式的正确姿势,写得太好了叭

​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; Lambda 表达式非常方便&#xff0c;在项目中一般在 stream 编程中用得比较多。 List<Student> studentList gen(); Map<String, Student> map studentList .stream() .…

Redis缓存的几个名词,缓存命中、缓存穿透、缓存雪崩、缓存击穿

本文为转载整理&#xff1a;原文地址为【https://zhuanlan.zhihu.com/p/422627839】 1. 缓存命中 缓存命中(cache hit)&#xff1a;当应用程序或软件请求数据时&#xff0c;会首先发生缓存命中。首先&#xff0c;中央处理单元&#xff08;CPU&#xff09;在其最近的内存位置&…