【音视频原理】音频编解码原理 ③ ( 音频 比特率 / 码率 | 音频 帧 / 帧长 | 音频 帧 采样排列方式 - 交错模式 和 非交错模式 )
文章目录
- 一、音频 比特率 / 码率
- 1、音频 比特率
- 2、音频 比特率 案例
- 3、音频 码率
- 4、音频 码率相关因素
- 5、常见的 音频 码率
- 6、视频码率 - 仅做参考
- 二、音频 帧 / 帧长
- 1、音频帧
- 2、音频 帧长度
- 三、音频 帧 采样排列方式 - 交错模式 和 非交错模式
- 1、交错模式
- 2、非交错模式
一、音频 比特率 / 码率
1、音频 比特率
" 音频 比特率 " 指的是 每秒 传输的 音频的 比特数 ;
单位是 bps , Bit Per Second ;
" 音频 比特率 " 是 衡量 音频 质量 的 标准 ;
原始 PCM 采样的音频 , 其 比特率 = 采样频率 * 采样位数 * 音频通道数 ;
2、音频 比特率 案例
如 : 采样频率为 44100 Hz , 采样位数是 16 位 ( 单个采样 2 字节 ) , 采样的通道数是 双声道立体声 , 则 该音频的比特率 为 :
44100 × 16 × 2 = 1 , 411 , 200 44100 \times 16 \times 2 = 1,411,200 44100×16×2=1,411,200
该音频一秒钟的比特数为 1411200 比特 ;
该数据量 为 1411200 ÷ 8 = 176400 1411200 \div 8 = 176400 1411200÷8=176400 字节 , 大约 172MB ;
3、音频 码率
音频 的 码率 指的是 压缩后的 音频数据 的 比特率 , 是 音频数据 在单位时间内的 传输速率 或 压缩率 , 表示 每秒钟 传输 或 存储 的音频数据量 , 通常以 kbps 千比特每秒 为单位 ;
音频 码率 决定了 音频文件 的 音质 和 文件大小 之间的平衡 ;
没有压缩的音频的比特率是确定的 , 就是 " 未压缩比特率 = 采样频率 * 采样位数 * 音频通道数 " ;
4、音频 码率相关因素
音频码率的大小 相关的 因素 :
- 音频的大小 :
- 采样率
- 位深度
- 声道数
- 编码算法
通常情况下 ,
- 较高的码率 通常会提供更好的音质 , 因为它包含更多的音频数据 , 能够更准确地还原原始声音信号 , 但会占用更多的存储空间 ;
- 较低的码率 可以减小文件大小 , 节省存储空间 , 但可能会导致音质的损失 , 因为它包含较少的音频数据 , 可能无法完全还原原始声音信号 ;
5、常见的 音频 码率
常见的 音频 码率 有 :
- 96 kbps : FM 音质 , 适用于一些对音质要求不高的场景 ;
- 128-160 kbps : 普通质量的音频码率 , 常用于在线音乐流媒体服务和普通音乐下载 ; 该 码率 音质较好 , 能够提供清晰的声音 , 在 复杂的音频场景 中可能会出现一些细节丢失 ;
- 192 kbps : CD 音质 , 该码率提供更高的音质 , 适用于对音质要求较高的音乐和音频内容 , 它在保持相对较小的文件大小的同时 , 提供更多的音频细节和动态范围 ;
- 256-320 kbps : 高质量音频的码率范围 , 通常被视为 无损音质 ; 该 码率 的 音频文件 能够提供非常接近原始录音的音质 , 适用于需要保留尽可能多音频细节的场景 ;
6、视频码率 - 仅做参考
视频码率 指的是 视频文件 在 单位时间内 的 数据流量 , 单位一般是 Mbps , 这是数据传输速率的一种单位 ;
Mbps 表示单位时间内传送比特的数目 , 通常用于衡量数字信号的传输速率 , 如 : 视频 / 音频 等多媒体数据的传输速率 , 网络带宽速率 等 ;
一般情况下 , 码率越高 , 视频的 分辨率 越高 , 视频越清晰 ; 但不是绝对的 , 有些时候 模糊的文件 码率也很高 ;
码率的单位 是 " Mbps " , 英文全称 " Megabits Per Second " , " 兆比特每秒 " , 是 传输速率单位 , 指每秒传输 比特 数量 ;
1 Mbps 代表每秒传输 1,000,000 位 ( 比特 , bit ) , 8 bit = 1 Byte , Byte 是字节 , 每字节 有 8 位 , 即 每秒传输的数据量为 1,000,000 / 8 =125,000 Byte / s ;
二、音频 帧 / 帧长
1、音频帧
" 音频帧 " 概念 : 将 音频 送入 音频编码器 进行编码时 , 一次性要送入指定个数的 " 采样 " ,
- 这些指定个数又 称为 " 单元数 " ,
- 这些指定个数的采样 称为为一个 " 编码单元 " , 又叫做 " 音频帧 "
- 这些指定个数的采样 换一种说法 , 也可以理解为 " 指定时间内的采样数 " ;
音频帧 的概念 与 编码格式 紧密相关 , 并由各个 编码标准 自己实现 , 不同的 " 编码格式 " 的 编码帧 采样个数是不同的 ;
- mp3 编码格式 的 音频编码帧 有 1152 个采样点 ;
- aac 编码格式 的 音频编码帧 有 1024 个采样点 ;
2、音频 帧长度
音频 帧长度 指的是 每个 音频帧 的 " 播放持续时间 " ,
音频帧持续时间 ( 单位 : 秒 ) = 采样点数 ( 单位 : 个 ) / 采样频率 ( 单位 : 赫兹 Hz ) ;
音频 帧长度 也可以 指 " 压缩后每个 音频帧 的 数据长度 " ;
以 mp3 压缩格式为例 , 采样率是 48000Hz , 一个 音频帧 ( 编码单元 ) 有 1152 个采样点 , 则 " 音频帧长度 " 为 :
1152 ÷ 48000 = 0.024 秒 = 24 毫秒 1152 \div 48000 = 0.024 秒 = 24 毫秒 1152÷48000=0.024秒=24毫秒
上面提到的 " 采样点数 " 概念 , 注意区分 采样点数 与 采样个数 :
- 如果是 单声道 , 就有 1 个音频采样 ,
- 如果是 立体声 ( 双声道 ) , 就有 2 个音频采样 ,
- 如果是 环绕声 ( 四声道 ) , 就有 4 个音频采样 ;
三、音频 帧 采样排列方式 - 交错模式 和 非交错模式
音频 编码 或 解码 时 , 首先要知道 在 音频帧 中 采样点 的排列方式 ,
数据以 " 连续帧 " 的方式存放 , 先记录 帧 1 的采样点 , 再记录 帧 2 的采样点 ,
在 " 音频帧 内部 " 的 音频 采样 排列方式 主要有 交错模式 和 非交错模式 两种排列方式 ;
1、交错模式
交错模式 : 在 存储 音频采样时 , 下图是 记录 4 个 双通道 采样点数据 ,
- 首先 , 记录 采样点 1 的 左声道 和 右声道 ,
- 然后 , 记录 采样点 2 的 左声道 和 右声道 ,
- 再后 , 记录 采样点 3 的 左声道 和 右声道 ,
- 最后 , 记录 采样点 4 的 左声道 和 右声道 ,
2、非交错模式
非交错模式 : 在 音频帧 中 存储 音频采样时 , 下图是 记录 4 个 双通道 采样点数据 ,
- 首先 , 记录 采样点 1 ~ 采样点 4 的 左声道 样本 ,
- 然后 , 记录 采样点 1 ~ 采样点 4 的 右声道 样本 ;
相关文章:

【音视频原理】音频编解码原理 ③ ( 音频 比特率 / 码率 | 音频 帧 / 帧长 | 音频 帧 采样排列方式 - 交错模式 和 非交错模式 )
文章目录 一、音频 比特率 / 码率1、音频 比特率2、音频 比特率 案例3、音频 码率4、音频 码率相关因素5、常见的 音频 码率6、视频码率 - 仅做参考 二、音频 帧 / 帧长1、音频帧2、音频 帧长度 三、音频 帧 采样排列方式 - 交错模式 和 非交错模式1、交错模式2、非交错模式 一…...

spring常用语法
etl表达式解析 if (rawValue ! null && rawValue.startsWith("#{") && entryValue.endsWith("}")) { // assume its spel StandardEvaluationContext context new StandardEvaluationContext(); context.setBeanResolver(new Be…...

【计算机毕业设计】128电脑配件销售系统
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板ÿ…...

换个思维方式快速上手UML和 plantUML——类图
和大多数朋友一样,Jeffrey 在一开始的时候也十分的厌烦软件工程的一系列东西,对工程化工具十分厌恶,觉得它繁琐,需要记忆很多没有意思的东西。 但是之所以,肯定有是因为。对工程化工具的不理解和不认可主要是基于两个逻…...

策略模式+SpringBoot接口,一个接口实现接收的数据自动分流处理
策略模式 定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式的精髓就在于将经常变化的一点提取出来,单独变成一类,并且各个类别可以相互替换和组合。 1、策略接口 CalculationStrategy //算数 public interface…...

P1228 地毯填补问题(葬送的芙蓉王【bushi】)
地毯填补问题 题目描述 相传在一个古老的阿拉伯国家里,有一座宫殿。宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将除公主站立的地方外的所有地…...

352. 闇の連鎖(树上差分,LCA)
352. 闇の連鎖 - AcWing题库 传说中的暗之连锁被人们称为 Dark。 Dark 是人类内心的黑暗的产物,古今中外的勇者们都试图打倒它。 经过研究,你发现 Dark 呈现无向图的结构,图中有 N 个节点和两类边,一类边被称为主要边ÿ…...

dcat admin + dingo + nginx 开发前台
前言 Dcat Admin 是一个功能强大的后端框架,主要用于开发管理后台。然而,大多数网站不仅需要一个管理后台,还需要一个用户界面,即“前台”,以及它们自己的用户系统。 为了实现这一目标,我们需要对 Dcat A…...

安卓线性布局LinearLayout
<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:…...

Advanced CNN
文章目录 回顾Google NetInception1*1卷积Inception模块的实现网络构建完整代码 ResNet残差模块 Resedual Block残差网络的简单应用残差实现的代码 练习 回顾 这是一个简单的线性的卷积神经网络 然而有很多更为复杂的卷积神经网络。 Google Net Google Net 也叫Inception V…...

判断当前设备是不是安卓或者IOS?
代码(重要点): 当前文件要是 xxx.js文件,就需要写好代码后调用才会执行: // 判断是不是安卓 const isAndroid () > {return /android/.test(navigator.userAgent.toLowerCase()); }// 判断是不是ios const isIOS () > {return /iphone|ipad|ipod/.test(navigator.use…...

使用C++操作Matlab中的mat文件
matlab提供读写MAT文件的头文件和库函数,下面列出这些文件的路径,其中matlabroot指matlab安装的路径,arch来识别平台架构 头文件在matlabroot\extern\include库函数在matlabroot\bin\win64例程在matlabroot\extern\examples\eng_mat头文件 …...

【OCPP】ocpp1.6协议第3.5章节:本地授权和离线行为-介绍及翻译
目录 3.5章节 概述 3.5 本地鉴权和离线行为-译文(Local Authorization & Offline Behavior) 3.5.1 鉴权缓存-译文(3.5.1. Authorization Cache) 3.5.2 本地鉴权列表-译文(Local Authorization List) 3.5.3 授权缓存和本地授权列表之间的关系-译文(Relation between A…...

OpenGL查询对象 Query Objects
查询对象和异步查询(Query Objects and Asynchronous Queries) Query Objects(查询对象)是OpenGL中的一种机制,用于获取有关一系列GL命令处理过程的信息。这些信息可以包括: 绘图命令处理的图元数量。写入变换反馈缓冲区的图元数…...

【数据分享】1929-2023年全球站点的逐日最高气温数据(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据! 之前我们分享过1929-2023年全球气象站…...

Docker深入解析:从基础到实践
Docker基础知识 Docker是什么:定义和核心概念解释 Docker是一个开源项目,它诞生于2013年,旨在自动化应用程序的部署过程, 让应用程序能够在轻量级的、可移植的、自给自足的容器中运行。这些容器可以在几乎任何机器上运行…...

【鸿蒙】大模型对话应用(一):大模型接口对接与调试
Demo介绍 本demo对接阿里云和百度的大模型API,实现一个简单的对话应用。 DecEco Studio版本:DevEco Studio 3.1.1 Release HarmonyOS API版本:API9 关键点:ArkTS、ArkUI、UIAbility、网络http请求、列表布局 官方接口文档 此…...

SQL的函数类型
目录 一、聚合函数 二、数值型函数 三、字符串函数 四、日期函数 五、流程控制函数 一、聚合函数 定义:聚合函数是指对一组值进行运算,最终返回是单个值,也可以被称为组合函数。 COUNT() 统计目标行数量的函数 AVG() 求平均值 SU…...

TSINGSEE青犀视频智慧电梯管理平台,执行精准管理、提升乘梯安全
一、方案背景 随着城市化进程的不断加快,我国已经成为全球最大的电梯生产和消费市场,电梯也成为人们日常生活中不可或缺的一部分。随着电梯数量的激增,电梯老龄化,维保数据不透明,物业管理成本高,政府监管…...

VMware:在部分链上无法执行所调用的函数,请打开父虚拟磁
VMware:在部分链上无法执行所调用的函数,请打开父虚拟磁 问题:VMware给虚拟机扩展硬盘容量,提示:在部分链上无法执行所调用的函数,请打开父虚拟磁。原因:是因为你的虚拟磁盘文件是分多个文件存储的…...

【数据结构 08】红黑树
一、概述 红黑树,是一种二叉搜索树,每一个节点上有一个存储位表示节点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长上两倍,因而是接进…...

【百度Apollo】自动驾驶规划技术:实现安全高效的智能驾驶
🎬 鸽芷咕:个人主页 🔥 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…...

《C程序设计》上机实验报告(五)之一维数组二维数组与字符数组
实验内容: 1.运行程序 #include <stdio.h> void main( ) { int i,j,iRow0,iCol0,m; int x[3][4]{{1,11,22,33},{2,28,98,38},{3,85,20,89}}; mx[0][0]; for(i0;i<3;i) for(j0;j<4;j) if (x[i][j]>m) { mx[i][j]; iRowi…...

【BUG】联想Y7000电池电量为0且无法充电解决方案汇总
因为最近火灾很多,所以昨天夜晚睡觉的时候把插线板电源关掉了,电脑也关机了。 各位一定要注意用电安全,网上的那些事情看着真的很难受qvq。 第二天早上起床的时候一看发现电脑直接没电了,插上电源后也是显示 你一定要冲进去啊(ू˃…...

centos7常用命令之安装插件2
centos7安装插件1 7、kibana 【启动kibana,需要调整这个配置文件(/opt/kibana-6.3.0/config/kibana.yml)的一处ip地址,因为每次虚拟机的ip地址可能会有所不同, 同时访问页面地址的ip:5601时,ip地址也对应修改】 1.解压缩包 cd /opt/ tar -xvf kibana-6.3.0-linux-x…...

MATLAB - 仿真单摆的周期性摆动
系列文章目录 前言 本例演示如何使用 Symbolic Math Toolbox™ 模拟单摆的运动。推导摆的运动方程,然后对小角度进行分析求解,对任意角度进行数值求解。 一、步骤 1:推导运动方程 摆是一个遵循微分方程的简单机械系统。摆最初静止在垂直位置…...

Pandas进阶--map映射,分组聚合和透视pivot_table详解
文章目录 1.Pandas的map映射(1)映射(2)map充当运算工具 2.数据分组和透视(1)分组统计 - groupby功能 是pandas最重要的功能(2)聚合agg 3.透视表pivot_table(1)…...

Visual Studio 和Clion配置Cocos2d-x环境
Visual Studio 和Clion配置Cocos2d-x环境 我就不贴图片的,懒得上传图床。懒。开发环境: 系统: Window11 编译器: CMake MSVC 开发工具:Clion or Visual Studio 请自行配置好,Python2.7,和Cmake Cocos2d-x下载…...

【百度Apollo】本地调试仿真:加速自动驾驶系统开发的利器
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…...

ztest中ddof起什么作用
⭐️ statsmodels 中 ztest 基本使用 statsmodels 也是一个强大的统计分析库,提供了丰富的统计模型和检验功能。对于 Z 检验,statsmodels 提供了 ztest 函数。 以下是使用 statsmodels 进行 Z 检验的示例: from statsmodels.stats.weights…...