【音视频原理】音频编解码原理 ③ ( 音频 比特率 / 码率 | 音频 帧 / 帧长 | 音频 帧 采样排列方式 - 交错模式 和 非交错模式 )

本文主要是介绍【音视频原理】音频编解码原理 ③ ( 音频 比特率 / 码率 | 音频 帧 / 帧长 | 音频 帧 采样排列方式 - 交错模式 和 非交错模式 ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、音频 比特率 / 码率
    • 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 的 右声道 样本 ;

在这里插入图片描述

这篇关于【音视频原理】音频编解码原理 ③ ( 音频 比特率 / 码率 | 音频 帧 / 帧长 | 音频 帧 采样排列方式 - 交错模式 和 非交错模式 )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/654677

相关文章

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要设置昵称 发送消息与消息展示 提示用户不能发送空消息 后端接口 发送消息 DB = []@ro

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓