音视频基础

音视频基础

  • 一、音视频录制原理
  • 二、音视频播放原理
  • 三、图像表示RGB-YUVV
    • 1.图像基础概念
      • 1.1 像素
      • 1.2 分辨率
      • 1.3 位深
      • 1.4 帧率
      • 1.5 码率
      • 1.6 Stride跨距
    • 2.RGB、YUV深入讲解
      • 2.1 RGB
      • 2.2 YUV
        • 2.2.1 YUV采样表示法
        • 2.2.2 YUV数据存储
      • 2.3 RGB和YUV的转换(了解)
        • 为什么解码出错显示绿屏?
    • 2.4 YUV Stride对齐问题
  • 四、视频
  • 五、音频
    • 1.基本概念
      • 声音的物理性质
    • 2.数字音频
      • 2.1 采样频率
      • 2.2 采样量化
    • 3.音频常见名词
    • 4.音频编码原理
      • 4.1 频谱掩蔽效应
      • 4.2 时域掩蔽效应
      • 4.3 压缩编码方法
  • 六、封装格式
  • 七、音视频同步概念

一、音视频录制原理

image-20240627175043483

  1. 采集阶段
    • 音频输入(麦克风)和视频输入(摄像头):这是录制过程的起始点,音视频数据从这里开始被系统捕获。
    • 音频处理视频处理:这些步骤涉及对捕获的音视频数据进行初步处理,如降噪、调整分辨率等。
  2. 队列管理
    • 音频帧队列视频帧队列:处理过的音视频数据被暂存于帧队列中,以便进一步处理。
    • 音频包队列视频包队列:帧数据进一步封装成数据包,以便于传输或存储。
  3. 编码与合成
    • 复用器:音频和视频数据包在此阶段被合成为一个单一的流,准备进行存储或发送。
  4. 输出
    • 文件:最终的音视频流被存储为文件,或者被发送到网络等媒体。

二、音视频播放原理

image-20240627175215856

  1. 输入
    • 文件:存储的音视频文件作为输入源。
  2. 解码与分离
    • 解复用器:输入的文件被分离成独立的音频和视频数据流。
  3. 队列管理
    • 音频包队列视频包队列:分离出的数据流被组织成数据包,暂存于队列中。
    • 音频帧队列视频帧队列:数据包进一步解码为帧,以便播放。
  4. 输出
    • 音频输出视频输出:解码后的音视频帧被发送到相应的输出设备,如扬声器和显示屏。

三、图像表示RGB-YUVV

1.图像基础概念

1.1 像素

image-20240627175849694

1.2 分辨率

image-20240627175919236

image-20240627180013970

1.3 位深

image-20240627185134491

1.4 帧率

image-20240627185236854

1.5 码率

image-20240627185414275

1.6 Stride跨距

image-20240627203203834

  1. 填充字节:每行末尾填充2个字节。
  2. 计算步骤:对于分辨率为638x480的RGB24图像,每个像素占用3个字节(RGB各1字节),每行有638个像素。
    • 每行的实际数据字节数计算为:638 * 3 = 1914字节。
    • 如果要以16字节对齐,则需要将每行数据的字节数向上取整到最接近的16的倍数,即1920字节。
  3. Stride(步幅):Stride是指每行像素在内存中实际占用的字节数。在这种情况下,每行实际占用的空间为1920字节,这个数值即为该图像的Stride。

综上所述,对于638x480的RGB24图像,每行末尾填充2个字节,并且为了内存对齐需要将每行数据的字节数向上取整到16的倍数,因此最终每行实际占用的字节数为1920字节,这就是该图像的Stride。

2.RGB、YUV深入讲解

RGB:红R、绿G、蓝B三基色。

YUV:“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma)。

2.1 RGB

通常的图像像素是按RGB顺序进行排列,但有些图像处理要转成其他顺序,比如OpenCV经常转成BGR的排列方式。

通常在RGB图像中,每个像素由红色(R)、绿色(G)、蓝色(B)三个颜色通道组成,每个通道占据一个字节,即8位。这样一组RGB数据共占据24个位或3个字节,因此称为RGB24格式。

image-20240627190222140

2.2 YUV

image-20240627190300599

image-20240627190409938

2.2.1 YUV采样表示法

YUV采用A:B:C表示法来描述Y,U,V采样频率比例,下图中黑点表示采样像素点Y分量,空心圆表示采样像素点的UV分量。主要分为 YUV 4:4:4、YUV 4:2:2、YUV 4:2:0 这几种常用的类型。

image-20240627213318858

2.2.2 YUV数据存储

下面以每个分量数据存储在一个char(或byte)中为例描述YUV的数据存储方式。

image-20240627213441387

image-20240627213508978

image-20240627213532714

image-20240627213647052

image-20240627213806385

2.3 RGB和YUV的转换(了解)

image-20240627214707931

为什么解码出错显示绿屏?

image-20240627214741053

2.4 YUV Stride对齐问题

image-20240627214954424

image-20240627215201258

四、视频

image-20240627215328968

image-20240627215531566

image-20240627215811912

image-20240627215834248

五、音频

1.基本概念

声音的物理性质

  • 振动

声音是一种由物体振动引发的物理现象,如小提琴的弦声等。物体的振动使其四周空气的压强产生变化,这种忽强忽弱变化以波的形式向四周传播,当被人耳所接收时,我们就听见了声音。

  • 波形

声音是由物体的振动产生的,这种振动引起了周围空气压强的振荡,我们称这种振荡的函数表现形式为波形。

image-20240628094927901

  • 频率

声音的频率是周期的倒数,它表示的是声音在1秒钟内的周期数,单位是赫兹(Hz)。千赫(kHz),即1000Hz,表示每秒振动1000次。声音按频率可作如下划分:

次声:0~20Hz

人耳能听见的声音:20Hz~20KHz

超声:20KHz~1GHz

特超声:1GHz~10THz

  • 振幅

声音有振幅,振幅的主观感觉是声音的大小。声音的振幅大小取决于空气压力波距平均值(也称平衡态)的最大偏移量。

image-20240628095037353

2.数字音频

计算机并不直接使用连续平滑的波形来表示声音,它是每隔固定的时间对波形的幅值进行采样,用得到的一系列数字量来表示声音。下图是经过数字采样的波形示意图。

脉冲编码调制PCM(Pulse Code Modulation),脉冲编码调制。人耳听到的是模拟信号,PCM是把声音从模拟信号转化为数字信号的技术。

2.1 采样频率

根据Nyguist采样定律,要从采样中完全恢复原始信号波形,采样频率必须至少是信号中最高频率的两倍。前面提到人耳能听到的频率范围是[20H~20kHz],所以采样频率一般为44.1Khz,这样就能保证声音到达20Khz也能被数字化,从而使得经过数字化处理之后,人耳听到的声音质量不会被降低。

image-20240628095223646

2.2 采样量化

采样是在离散的时间点上进行的,而采样值本身在计算机中也是离散的。采样值的精度取决于它用多少位来表示,这就是量化。例如8位量化可以表示256个不同值,而CD质量的16位量化可以表示65536个值,范围为[-32768, 32767]。

下图是一个3位量化的示意图,可以看出3位量化只能表示8个值:0.75,0.5,0.25,0,-0.25,-0.5,-0.75和-1,因而量化位数越少,波形就越难辨认,还原后的声音质量也就越差(可能除了一片嗡嗡声之外什么都没有)。

image-20240628095316433

3.音频常见名词

image-20240628095434623

image-20240628095519996

image-20240628095926027

image-20240628095938720

image-20240628095954958

4.音频编码原理

数字音频信号如果不加压缩地直接进行传送,将会占用极大的带宽。例如,一套双声道数字音频若取样频率为44.1KHz,每样值按16bit量化,则其码率为:

2*44.1kHz*16bit=1.411Mbit/s

如此大的带宽将给信号的传输和处理都带来许多困难和成本(阿里云服务器带宽大于5M后,每M价格是100元/月),因此必须采取音频压缩技术对音频数据进行处理,才能有效地传输音频数据。

数字音频压缩编码在保证信号在听觉方面不产生失真的前提下,对音频数据信号进行尽可能大的压缩,降低数据量。数字音频压缩编码采取去除声音信号中冗余成分的方法来实现。所谓冗余成分指的是音频中不能被人耳感知到的信号,它们对确定声音的音色,音调等信息没有任何的帮助。

冗余信号包含人耳听觉范围外的音频信号以及被掩蔽掉的音频信号等。例如,人耳所能察觉的声音信号的频率范围为20Hz~20KHz,除此之外的其它频率人耳无法察觉,都可视为冗余信号。此外,根据人耳听觉的生理和心理声学现象,当一个强音信号与一个弱音信号同时存在时,弱音信号将被强音信号所掩蔽而听不见,这样弱音信号就可以视为冗余信号而不用传送。这就是人耳听觉的掩蔽效应,主要表现在频谱掩蔽效应时域掩蔽效应

4.1 频谱掩蔽效应

image-20240628100217075

4.2 时域掩蔽效应

image-20240628100313328

4.3 压缩编码方法

image-20240628100355174

六、封装格式

image-20240628100449250

image-20240628100543138

  • 常见的视频封装格式

image-20240628100613688

七、音视频同步概念

DTS(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。

PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧(音频或视频)的数据。

  • 音视频同步方式:
    • Audio Master:同步视频到音频
    • Video Master:同步音频到视频
    • External Clock Master:同步音频和视频到外部时钟。
  • 一般情况下 Audio Master > External Clock Master > Video Master

数据。

PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧(音频或视频)的数据。

  • 音视频同步方式:
    • Audio Master:同步视频到音频
    • Video Master:同步音频到视频
    • External Clock Master:同步音频和视频到外部时钟。
  • 一般情况下 Audio Master > External Clock Master > Video Master

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/752253.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

百问网全志D1h开发板投屏功能实现

投屏功能实现 D1系列号称点屏神器,不仅能点屏,还能用于投屏。 源码准备 百问网为 【百问网D1h开发板】提供了投屏功能需要使用的源码,直接git下载即可: git clone https://github.com/DongshanPI/DongshannezhaSTU_DLNA_Scree…

嵌入式Linux系统编程 — 4.3 strcat、strcpy函数拼接与复制字符串

目录 1 字符串拼接 1.1 strcat函数 1.2 strncat函数 1.3 示例程序 2 字符串复制 2.1 strcpy函数 2.2 strncpy函数 2.3 示例程序 1 字符串拼接 1.1 strcat函数 在Linux系统中,strcat 函数是C语言标准库中的一个函数,用于将一个字符串追加到另一…

MySQL内存使用率高且不释放问题排查与总结

背景 生产环境mysql 5.7内存占用超过90%以上,且一直下不来。截图如下: 原因分析 1、确定mysql具体的占用内存大小,通过命令:cat /proc/Mysql进程ID/status查看 命令执行后的结果比较多(其他参数的含义想了解可参考这…

【Python】已解决:(SqlServer报错)SQL错误(208):对象名‘string_split’无效

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:(SqlServer报错)SQL错误(208):对象名‘string_split’无效 一、分析问题背景 在使用Python连接SqlSe…

泰迪智能科技携手广州番禺职业技术学院共建上进双创工作室

为充分发挥校企双方的优势,促进产教融合,发挥职业教育为社会、行业、企业服务的作用,为企业培养更多高素质、高技能的应用型人才的同时也为学生实习、就业提供更大空间。6月26日,“泰迪广州番禺职业技术学院上进双创工作室签约授牌…

体验过可道云teamOS这些人性化设置,就再也回不去了

公司出于对文件安全的看重,让数据不落地,更安全,使用企业网盘办公已经是我们的办公常态了。 作为一款每天都要使用的软件,良好的使用体验是非常重要的。 今天就来谈一谈在使用可道云teamOS过程中,它那些令用户好感上升…

高中数学:复数-基础概念及运算法则

一、定义 规定 复数集与实数集之间的关系 二、复数的几何意义 第一种几何意义 第二种几何意义 复数向量的模 共轭复数 三、四则运算 加法 复向量加法 减法 两复数的距离 乘法 除法 四、总结 复数的所有运算法则和实数相同。 向量运算和实数向量运算相同。 怎么简便记忆了&a…

3D Wizard(巫师法师人物角色模型)

3D Wizard低多边形模型,可用于RPG射击游戏和其他项目。角色顶点数:44154 无HDRP 仅默认着色器 顶点数:44154 装配有人形骷髅。 下载:​​Unity资源商店链接资源下载链接 效果图:

企业“出海”动向 | 香港电讯助力企业勇闯东南亚市场

众所周知,随着中国人口红利及经营成本的上升,越来越多跨国企业的制造工厂往东南亚、印度等国家迁移。而国内的一些中低端制造业也由于地缘优势,纷纷在东南亚地区建立“代工厂”。 近几年,接过 “世界代工厂”重任的东南亚逐步向数…

C#使用MJpeg实现视频流发送与显示

1、发送视频流: using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Drawing; using System.Globalization; using System.IO; using System.Linq; using System.Net.Sockets; using System.Text; using System.T…

企业级数据库18条黄金设计原则(全网最详细!!!)

前言 1.名字 2.字段类型 3.字段长度 4.字段个数 5. 主键 6.存储引擎 7. NOT NULL 8.外键(不建议使用外健) 9. 索引 10.时间字段 11.金额字段 12. json字段 13.唯一索引 14.字符集 15. 排序规则 16.大字段 17.冗余字段 18.注释 前言 后端开发的日常工作&#…

超高速PCIe EtherCAT运动控制卡在高速异形插件机上的应用

市场应用背景 异形插件机主要应用于电子制造业中,专门用于自动化电子装配过程。它能够按照预设程序将编带或者供料器的电子元件通过多工位多头夹取,将电阻、电容、晶体管、连接器和按键等异形元件自动插装到PCB板的指定通孔上,极大地提高生产…

【PL理论深化】(9) Ocaml 语言:自定义类型 | 异常处理 | 模块

💬 写在前面:本章我们将继续介绍 OCaml 的基本特性,自定义类型、异常处理和模块。掌握了这些内容后,编写基本程序应该不会有太大困难。接下来的两节将学习函数式编程中常用的两种编程风格 —— 递归函数和高阶函数。 目录 0x00 …

基于盲信号处理的声音分离——最小化增益的ICA算法

基于最小化增益的ICA算法的算法是依据混合信号经过盲信号分离会产生一定的噪声,为了使得分离后的信号与原信号的比值最小时,叫做增益最小。当增益越小时,分离后噪声越小,分离信号越接近原信号,分离算法的效果越好。这是…

防止多次点击,vue的按钮上做简易的防抖节流处理

话不多说,上个视频,看看是不是你要的效果 防抖节流 1.创建一个directive.js // directive.js export default {install(Vue) {// 防重复点击(指令实现)Vue.directive(repeatClick, {inserted(el, binding) {el.addEventListener(click, () > {if (!el.disabled) {el.disabl…

【Stable Diffusion】AI绘画美女,搞副业,赚钱真香!(内附高质量美女提示词)

前言 今天就直接上干货,给铁子们上一些生成高质量美女的提示词,每一种美女类型都附有魔法咒语,可应用于midjourney和stablediffusion,直接复制即可。 话不多说,直接上图,上提示词,请欣赏&…

三大工作流引擎技术Activiti、Flowable、Camunda选型指南

文章目录 前言1 流程引擎发展历程2 流程引擎主要概念BPM (Business Process Management)BPMN (Business Process Model and Notation)CMMN (Case Management Model and Notation)DMN (Decision Model and Notation)事件(Event)顺序流(Sequenc…

控制台扫雷(C语言实现)

目录 博文目的实现思路项目创建文件解释 具体实现判断玩家进行游戏还是退出扫雷棋盘的确定地图初始化埋雷玩家扫雷的实现雷判断函数 源码game.cgame.h扫雷.c 博文目的 相信不少人都学习了c语言的函数,循环,分支那我们就可以写一个控制台的扫雷小游戏来检…

【AI落地应用实战】如何让扫描工具更会思考——智能高清滤镜2.0实战测评

一、引言 在这个信息爆炸的数字化时代,扫描工具已经成为我们日常工作和学习中不可或缺的助手。最近,扫描全能王推出了革命性的“智能高清滤镜2.0”,本次更新后,智能高清滤镜能够智能识别并优化扫描过程中的各种问题。无论是光线不…

【乐吾乐2D可视化组态编辑器】图元外观编辑

1 节点的外观样式 角度:设置尖角与圆角,值的范围:0~1 旋转:设置图形的旋转角度 进度:任意封闭图形,都可以当进度条:矩形、圆、svg、封闭连线、或其他任意封闭图形,值的范围&#…