本文主要是介绍音频相关pcm,增益,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
PCM音频编码
PCM音频编码 - 简书
什么是分贝 (dB)?
20db代表的是声音的增益,它的数值是以对数的形式表示的。在音频工程中,db是一种常用的度量单位,用于描述声音的音量、音频信号的增减和功率的放大或缩小等。20db表示声音的增益是原来的10倍,也就是说,当声音的强度增加20db时,它的声音强度会增加到原来的10倍。例如,如果原来的声音强度是50db,那么当增加20db时,它的声音强度将变为70db。
需要注意的是,在音频工程中,db的增减是以对数的形式计算的,所以它的增益是以指数形式增长的,因此20db的增益比10db大,50db的增益比40db大。这也是为什么在音频工程中,我们经常使用db作为度量单位的原因。
AAC通常是1024个采样点作为一个编码单元
mp3是1152
比如:MP3 48k, 1152个采样点,每帧则为 24毫秒
1152/48000= 0.024 秒 = 24毫秒;
如果是 16位, 双声道, 1152*(16/8)*2= 1152*2*2 = 4608个字节,
除非是 8 位,单声道, 1152*(8/8)*1 = 1152 个字节
详解 WebRTC 高音质低延时的背后 — AGC(自动增益控制)_webrtc agc_音视频开发老马的博客-CSDN博客
FPGA学习笔记之——信号处理基础概念_fpga中怎么将数值换算成db_苑同学的博客-CSDN博客
16bit的pcm双声道转单声道
16bit的pcm双声道转单声道_arseyli的博客-CSDN博客
PCM音频振幅知识
PCM音频振幅知识_zidan的博客-CSDN博客_音频振幅
数字音频存储大小。采样频率、量化深度数越高,声音质量也越高,保存这段声音所用的空间也就越大。立体声(双声道)存储大小是单声道文件的两倍。即:文件大小(B)=采样频率(Hz)×录音时间(S)×(量化深度/8)×声道数(单声道为1,立体声为2)
如:录制1分钟采样频率为44.1KHz,量化深度为16位,立体声的声音(CD音质),文件大小为:44.1×1000×60×(16/8)×2=10584000B≈10.09M
二.P
(640条消息) FFmpeg通过volume filter进行音频数据的增益_ffmpeg filter volume_passionkk的博客-CSDN博客
//将1.wav音量增大2倍并保存为2.wav,如果想降低2倍,参数为volume=0.5
ffmpeg.exe -i 1.wav -af volume=2 2.wav
FFmpeg视频播放器开发-FFmpeg视频音量调节(六) - 知乎 (zhihu.com)
(640条消息) [FFMPEG]进行音频音量调整_ffmpeg 调整音量_酷咪兔的博客-CSDN博客
PCM 音频编码
PCM信号未经过任何编码和压缩处理(无损压缩)。与模拟信号比,它不易受传送系统的杂波及失真的影响。动态范围宽,可得到音质相当好的效果。编码上采用A律13折线编码。
A律13折线
A律是PCM非均匀量化中的一种对数压扩形式。数字脉冲编码调制(PCM)是目前模拟信号数字化的基本方法,PCM包括采样、量化、编码三个步骤,其中量化是对抽样值的取值离散,根据量化间隔的不同选取分为均匀量化和非均匀量化,非均匀量化可以有效地改善信号的量化信噪比。语音信号的量化常采用ITU建议的两种对数形式的非均匀量化压缩特性:A律和μ律,A律编码主要用于30/32路一次群系统, A律PCM用于欧洲和中国。
具体可以看文章
声道格式 : L R
音响中的R 、L、C分别表示什么_百度知道
他们回答的都错的R 、L、是代表左,右声道 C 就是中置的意思拉!就是你的放在电视上的中置音箱。
视音频数据处理入门:PCM音频采样数据处理
视音频数据处理入门:PCM音频采样数据处理_雷霄骅的博客-CSDN博客_pcm采样
详解音频编解码的原理、演进和应用选型等
https://www.jianshu.com/p/6b4c481f4294
即时通讯开发中音频编解码的原理、演进和应用选型-wecloud-ChinaUnix博客
ADTS(Audio Data Transport Stream)头之于AAC
ADTS(Audio Data Transport Stream)头之于AAC_coloriy的博客-CSDN博客_audio data transport stream (adts)
]# dnf install sox
]# soxi output.opus
Input File : 'output.opus'
Channels : 1
Sample Rate : 48000
Precision : 16-bit
Duration : 00:00:55.96 = 2686080 samples ~ 4197 CDDA sectors
File Size : 906k
Bit Rate : 129k
Sample Encoding: Opus
Comments :
language=eng
handler_name=SoundHandler
major_brand=isom
minor_version=512
compatible_brands=isomiso2avc1mp41
encoder=Lavf58.45.100
[root@localhost shipin]#
48000*16
pin]# ffprobe -loglevel quiet -print_format json -show_format -show_streams -i output.opus
{
"streams": [
{
"index": 0,
"codec_name": "opus",
"codec_long_name": "Opus (Opus Interactive Audio Codec)",
"codec_type": "audio",
"codec_time_base": "1/48000",
"codec_tag_string": "[0][0][0][0]",
"codec_tag": "0x0000",
"sample_fmt": "fltp",
"sample_rate": "48000",
"channels": 1,
"channel_layout": "mono",
"bits_per_sample": 0,
"r_frame_rate": "0/0",
"avg_frame_rate": "0/0",
"time_base": "1/48000",
"start_pts": 0,
"start_time": "0.000000",
"duration_ts": 2686200,
"duration": "55.962500",
"disposition": {
"default": 0,
"dub": 0,
"original": 0,
"comment": 0,
"lyrics": 0,
"karaoke": 0,
"forced": 0,
"hearing_impaired": 0,
"visual_impaired": 0,
"clean_effects": 0,
"attached_pic": 0,
"timed_thumbnails": 0
},
"tags": {
"language": "eng",
"handler_name": "SoundHandler",
"major_brand": "isom",
"minor_version": "512",
"compatible_brands": "isomiso2avc1mp41",
"encoder": "Lavf58.45.100"
}
}
],
"format": {
"filename": "output.opus",
"nb_streams": 1,
"nb_programs": 0,
"format_name": "ogg",
"format_long_name": "Ogg",
"start_time": "0.000000",
"duration": "55.962500",
"size": "905842",
"bit_rate": "129492",
"probe_score": 100
}
}
[root@localhost shipin]#
audio驱动之简单介绍
-
PCM :
PCM(Pulse-code modulation)
是脉冲编码调制,PCM
信号的两个重要指标是采样频率 和 量化精度 ,目前,CD音频的采样频率通常为44100Hz
,量化精度是16bit
。播放音乐时,应用程序从存储介质中读取音频数据(MP3、WMA、AAC…),经过解码后,最终送到音频驱动程序中的就是PCM
数据;在录音时,音频驱动不停地把采样所得的PCM
数据送回给应用程序,由应用程序完成压缩、存储等任务。所以,音频驱动的两大核心任务就是:
- playback:如何把用户空间的应用程序发过来的
PCM
数据,转化为人耳可以辨别的模拟音频信号- capture:把
mic
拾取到的模拟信号,经过采样、量化,转换为PCM
数据送回给用户空间
音频驱动主要实现一下3个部分的功能:
(1)播放声音(playback)
(2)录音(capture)
(3)声音控制(control)
运行adb shell ls -l /dev/snd
,我们可以看到当前平台注册的声卡驱动设备。
主要分为以下几类:
这篇关于音频相关pcm,增益的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!