码农知识堂 - 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原理

  • 相关阅读:
    git中如何在父仓库提交子仓库的修改
    mysql 5.7在线开启/关闭GTID
    Xylan-Alkyne木聚糖-炔基|炔基-PEG-木聚糖
    麒麟系统smb共享输入用户密码无法连接的处理方法
    mindspore编译报错
    Selenium
    洛谷 P1909 [NOIP2016 普及组] 买铅笔
    聊聊MySQL存储过程
    甲方需求被公司明确指示不能做,身为公司项目经理,怎么处理?
    Linux 下的 input 子系统开发框架
  • 原文地址:https://blog.csdn.net/MichaelKongChina/article/details/126428838
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号