音视频处理 - 音频概念详解,码率,采样率,位深度,声道,编码

本文主要是介绍音视频处理 - 音频概念详解,码率,采样率,位深度,声道,编码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 音频采样

与视频不同,音频的最小单位不是一帧,而是一个采样。

采样是当前一刻声音的声音样本,样本需要经过数字转换才能存储为样本数据。

真实声音是连续的,但是在计算机中,声音是离散且均匀的声音样本。

2. 位深度

数字转换时会根据位深度转换,位深度就是存储单个样本数据的大小,位深度越大,记录的样本数据精度就越高。

网络视频、音频文件一般位深度为 16bit,常用位深度还有 8bit、24bit 等。

这里需要一提的是,位深度越大虽然意味着声音还原度越高,但是过高的位深度,如 32bit、64bit 或以上,可能需要特殊的软件和硬件设备才能播放。

3. 声道

音频有单声道、双声道、立体声等。

每个声道的声音样本都会单独记录,一般双声道的采样数是单声道的两倍,多声道同理。

多个声道的样本数据一般会按声道排列顺序记录,播放时,程序会根据排列顺序将声音用不同的扬声器播放。

4. 采样率

采样率是采样的频率,与视频的帧率类似,是一秒钟对声音的采样个数,如果是双声道,那么 1 秒采样的个数是采样率的两倍,多声道同理。

普遍认为,流畅且不失真的音频,要求采样率达到 40KHz 以上,这个采样率是人类听觉频率上限的两倍,一般 CD 品质音频的采样率是 44.1KHz,网络视频、视频文件一般是 48KHz。

常见的音频采样率:1. 8KHz             音频通话或监控2. 22.05KHz\24KHz   FM 调频广播3. 44.1KHz          CD 品质4. 48KHz            一般网络电影或视频

5. 单个音频帧

理论上,音频并不需要音频帧的概念,因为音频采样数据和采样率已经可以把音频播放描述清楚了。

但是音视频文件播放时,为了保证音视频同步,程序需要根据每帧的播放时间戳进行有序播放。

但是每个音频采样数据太小了,如果每个采样数据都记录播放时间戳的话,那么就得不偿失了。毕竟一个时间戳数据的大小比一个音频采样数据都大,所以就有了音频帧的概念。

音频帧实际上就是把一小段时间的音频采样数据打包起来,如每20ms的音频采样数据合并成一帧。

这里的具体时间间隔是具体编码码格式决定的,一般不需要特别关心。

image

和视频帧一样,每一帧音频帧也会记录播放时间戳 PTS,程序播放时会根据播放时间戳 PTS 播放音频帧。

音频帧的播放是比较特别的,因为一帧音频包含的是一小段时间的音频采样,所以实际上音频帧的播放时间戳只是这一小段音频的开始播放时间,里面的采样数据会根据采样频率连续播放。

6. 码率

音频码率,也就是常听到的音频比特率,码率就是一秒钟的数据量大小。

在不压缩的情况下,音频码率的大小=采样率位深度声道数。

7. 编码格式

编码格式实际上是压缩数据的方式,常用的编码格式有 wav、mp3、aac 等,音频编码格式有有损、无损压缩之分。

mp3、aac 这些编码格式是有损压缩,其中mp3支持的最大码率是 320Kbps,而 wav 编码格式是无损压缩,虽然压缩后的码率可能会比降低,但是它在播放时能无损还原采样数据。

最后值得一提的是,在网络音频文件、音频直播时,需要考虑限制码率,限制码率的目的是为了限制数据量的大小,避免带宽、流量等问题。

音频编码格式一般采用 aac,音频码率一般设置为 128Kbps 就可以了。

这篇关于音视频处理 - 音频概念详解,码率,采样率,位深度,声道,编码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

Spring Cloud LoadBalancer 负载均衡详解

《SpringCloudLoadBalancer负载均衡详解》本文介绍了如何在SpringCloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和... 目录1. 在 idea 上运行多个服务2. 问题引入3. 负载均衡4. Spring Cloud Load

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.

Java中八大包装类举例详解(通俗易懂)

《Java中八大包装类举例详解(通俗易懂)》:本文主要介绍Java中的包装类,包括它们的作用、特点、用途以及如何进行装箱和拆箱,包装类还提供了许多实用方法,如转换、获取基本类型值、比较和类型检测,... 目录一、包装类(Wrapper Class)1、简要介绍2、包装类特点3、包装类用途二、装箱和拆箱1、装

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操