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 个字节

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,增益相关推荐

  1. ios音频相关基础知识

    最近在看音频相关的知识,然后就搜集了些基础知识记录下来,以便日后查看和供需要的人学习 1.音频(audio) 指人耳可以听到的声音频率在20HZ~20kHz之间的声波,称为音频. 2.音频采样(aud ...

  2. qcom 音频相关的dsp driver笔记(基于msm8996平台)

    qcom 音频相关的dsp driver笔记(基于msm8996平台) 原址 0 前言 1 关于acdb 1.1 从audio_calibration.c说起 1.2 关于acdb配置的注册 1.3 ...

  3. NDK开发——FFmpeg实现视频转YUV、视频转RGB显示、音频转PCM、音频播放、音视频同步

    项目演示 前提准备 编译FFmpeg+CMake并能运行,详细可见我博客 下载libyuv库并编译成libyuv.so库,用于实现转换RGB格式功能 FFmpeg库简介 avcodec:编解码,包含 ...

  4. Android音频开发(1):音频相关知识

    Android 音频开发 目录 Android音频开发(1):音频相关知识 Android音频开发(2):使用AudioRecord录制pcm格式音频 Android音频开发(3):使用AudioRe ...

  5. # 蓝牙音频相关知识

    蓝牙音频相关知识 文章目录 蓝牙音频相关知识 1 音频源 2 蓝牙音频编解码器 3 一些标准 4 蓝牙音频其他相关知识 4.1 蓝牙版本 4.2 ANC(主动降噪) 4.3 音响相关参数 4.4 音质 ...

  6. android音频编辑之音频转换PCM与WAV

    前言 本篇开始讲解在Android平台上进行的音频编辑开发,首先需要对音频相关概念有基础的认识.所以本篇要讲解以下内容: 常用音频格式简介 WAV和PCM的区别和联系 WAV文件头信息 采样率简介 声 ...

  7. 原 android音频编辑之音频转换PCM与WAV

    http://blog.csdn.net/hesong1120/article/details/79043482 本文出自: hesong的专栏 前言 本篇开始讲解在Android平台上进行的音频编辑 ...

  8. 【Android RTMP】音频数据采集编码 ( FAAC 头文件与静态库拷贝到 AS | CMakeList.txt 配置 FAAC | AudioRecord 音频采样 PCM 格式 )

    文章目录 安卓直播推流专栏博客总结 一. FAAC 头文件与静态库拷贝到 Android Studio 二. CMakeList.txt 构建脚本配置 三. Java 层 AudioRecord 音频 ...

  9. ios获取麦克风音频输入数据(PCM)计算DBSPL后与真实值差距很大

    引用了AVFoundation框架,采样率44100,通道2,深度16位,音频格式PCM: 获取到的数据结果为-1~1之间的浮点数,比如0.10541119: 但通过转换为分贝20 * log10(0 ...

最新文章

  1. jsoncpp 库的使用方法
  2. 10.18.1 linux文本编辑器vim
  3. c语言将一个已知头结点的单链表逆序_C语言实现单链表逆序与逆序输出实例
  4. gRPC四种模式、认证和授权实战演示
  5. 用wamper打开php源码_php源码该怎么设置数据库
  6. 什么是机器人的五点校正法_机器人校正方法
  7. 数据结构习题--用双队列模拟栈及用栈逆置队列
  8. enum 在c中的使用
  9. STM3 2实现串口通信 库函数版
  10. List集合去重的常见几种方式
  11. 一次ARP***的处理过程
  12. 踩坑日志:go并发读取文件
  13. 【转】企业微信自动打卡设置
  14. 阿里云服务器配置远程打印机,电脑启用打印服务器配置
  15. 1224:整除的尾数 c语言
  16. break跳出几层循环_Go循环语句的使用
  17. 一个简单的数据查询到前端展示总结
  18. 比尔·盖茨的分布式爱情
  19. python os.system_python中os.system()的返回值
  20. 毕业设计 - 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

热门文章

  1. “网格化+智慧管理”助力基层治理
  2. 南邮和重庆邮电大学计算机专业,同是邮电高校,南邮和重庆邮电大学谁更厉害?...
  3. 高级语言到机器语言的过程、三种翻译工具的辨析
  4. android打开前置摄像头和后置摄像头
  5. PAT 乙级 1031 查验身份证 (15分)
  6. admui 框架源码 构建工具
  7. 支付宝/飞行模式解决/已停止访问该网页
  8. 电商婴幼儿产品数据分析
  9. [SWIG] SWIG原理(以C#为例)
  10. 二十世纪最伟大的十个算法