码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【音视频基础】音频基础理论


    音频基础理论

    • 声音是如何被听到的
      • 声音的产生
      • 人类听觉范围
      • 声音的三要素
    • 模数转换
    • PCM裸流
      • 关键采样概念
      • 音频采样数据
        • 作用与特点
        • 码率
        • PCM格式存储
        • 音频采样数据查看工具:Adobe Audition
        • ffplay播放PCM
    • 参考资料

    个人简介

    📦个人主页:一二三o-0-O的博客
    🏆技术方向:C/C++客户端(直播+音视频剪辑)
    📣专栏目标:务实的掌握音视频相关专业知识
    🧡如果对您有帮助的话辛苦点赞支持。👍👍👍

    音视频基础专栏系列

    (一)【音视频基础】音频基础理论
    (二)【音视频基础】视频基础理论
    (三)【音视频基础】封装格式与编码数据

    ffmpeg专栏系列

    (一)【ffmpeg】ffmpeg命令工具的使用
    (二)【ffmpeg】视频解码器
    (三)【ffmpeg】SDL视频显示
    (四)【ffmpeg】ffmpeg+SDL实现播放器

    声音是如何被听到的

    声音的产生

    1. 声音是由物体振动产生的
    2. 它可以通过空气、固体、液体等进行传输
    3. 震动耳膜
    4. 经过大脑神经识别

    人类听觉范围

    在这里插入图片描述
    如上图所示:人类的听觉范围是20Hz~20kHz

    声音的三要素

    1. 音调:音频的快慢
      在这里插入图片描述
      由上图的波形图可知:红线绿线代表的音频的频率大于红线代表的音频的频率,因此绿线代表的音频的音调大于红线代表的音频的音调
    2. 音量:震动的幅度
      在这里插入图片描述
      由上图的波形图可知:红线右侧的音量震动的幅度大于红线左侧的音量震动幅度,因此右侧的音量高于左侧的音量
    3. 音色:谐波
      在这里插入图片描述
      不同的音色由不同的谐波组成的:(绿色为基频主频)基频+一次谐波(黄)+二次谐波(蓝)

    模数转换

    将音频模拟信号转化为数字信号的流程图如下:
    在这里插入图片描述

    PCM裸流

    关键采样概念

    现在已经将模拟信号转化为了数字信号。在对声音进行量化的过程有一些关键采样概念:

    1. 采样大小:一个采样用多少bit存放。常用的是16bit
    2. 采样率:采样频率8k、16k、32k、44.1k、48k
    3. 声道数:单声道、双声道、多声道

    音频采样数据

    作用与特点

    音频采样数据的作用是:保存了音频中每个采样点的值。 数据特点是体积会很大,一般情况加一首4分钟的PCM格式的歌曲体积为:4604410022 = 42.3MByte(假定采样率为44.1KHz,采样大小为16bit,双声道)。

    码率

    那么如何计算一个PCM音频流的码率呢?
    同理:采样率为44.1KHz,采样大小为16bit,双声道采集的PCM裸流的码率是:44100 * 2 * 2 = 176400Byte/s = 176.4KB/s = 1411.2Kb/s

    PCM格式存储

    PCM格式的存储方式是单声道的情况下按照顺序存储每个采样点的数据。 双声道的情况下按照“左右、左右”的顺序存储每个采样点两个声道的数据。

    在这里插入图片描述

    音频采样数据查看工具:Adobe Audition

    在这里插入图片描述
    如图所示:你可以导入一个PCM音频裸流文件,输入PCM的采样大小、采样率与声道数就可以直接播放PCM音频文件。可以看到音频的波形图、播放电平等关键信息。

    ffplay播放PCM

    最后大家可以尝试使用ffplay直接播放PCM音频文件。
    ffplay命令:ffplay -ar 44100 -ac 2 -f s16le -i 00NocturneNo2inEflat_44.1k_s16le.pcm

    • -ar:采样率
    • -ac:声道数
    • -f:采样大小
    • -i:PCM音频文件

    播放效果如下图:
    在这里插入图片描述

    参考资料

    【1】雷神博客
    【2】李超:音视频基础+ffmpeg原理

  • 相关阅读:
    Python数据分析实战-dataframe分组提取每一组的首条记录(附源码和实现效果)
    Linux 开机运行sh 脚本 三种方法
    重学设计模式(三、设计模式-访问者模式)
    qt-mvvm代码分析
    7种设计模式
    PostgreSQL 数据库中查找阻塞和被阻塞的进程
    SpringBoot DeferredResult 长轮询实现实现方式?
    Java集合
    【ES的优势和原理及分布式开发的好处与坏处】
    数据库学习之B-树
  • 原文地址:https://blog.csdn.net/MichaelKongChina/article/details/126428838
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号