一、音视频基础

音视频基础

  • 一、音视频录制原理
  • 二、音视频播放原理
  • 三、图像表示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/755001.html

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

相关文章

借助 Aspose.Words,在 C# 中将 Word 转换为 Excel

有时我们会遇到需要将 Word 文档(DOC 或 DOCX)转换为 Excel 文档的任务。例如,这对于数据分析和报告很有用,或者如果您收到了任何文本数据并想将其转换为表格格式(XLS 或 XLSX)以便进一步工作。在本文中&am…

【DevExpress】WPF DevExpressMVVM 24.1版本开发指南

DevExpressMVVM WPF 环境安装 前言重要Bug(必看)环境安装控件目录Theme 主题LoginWindow 登陆窗口INavigationService 导航服务DockLayout Dock类型的画面布局TreeView 树状列表注意引用类型的时候ImageSource是PresentationCore程序集的博主找了好久&am…

AV Foundation学习笔记二 - 播放器

ASSets AVFoundation框架的最核心的类是AVAsset,该类是整个AVFoundation框架设计的中心。AVAsset是一个抽象的(意味着你不能调用AVAsset的alloc或者new方法来创建一个AVAsset实例对象,而是通过该类的静态方法来创建实例对象)、不…

社团成员信息系统

ER实体关系图与数据库模型 DDL CREATE TABLE club (club_id int(11) NOT NULL AUTO_INCREMENT,club_name varchar(100) NOT NULL,president_name varchar(50) DEFAULT NULL,foundation_date date DEFAULT NULL,description text,PRIMARY KEY (club_id),KEY president_name (pr…

DP(动态规划)【2】 最大连续子列和 最长不降子序列

1.最大连续子列和 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstring> #include <queue> using namespace std; const int N10002,maxn10;int n,m,k,f[N]{0},dp[N]{0};int main() {scanf(&quo…

1.SQL注入-数字型

SQL注入-数字型(post) 查询1的时候发现url后面的链接没有传入1的参数。验证为post请求方式&#xff0c;仅显示用户和邮箱 通过图中的显示的字段&#xff0c;我们可以猜测传入数据库里面的语句&#xff0c;例如&#xff1a; select 字段1,字段2 from 表名 where id1; 编辑一个…

【漏洞复现】宏景HCM人力资源信息管理系统——任意文件读取漏洞

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 宏景HCM人力资源信息管理系统是一款全面覆盖人力资源管理各模块…

GPT-4o首次引入!全新图像自动评估基准发布!

目录 01 什么是DreamBench&#xff1f; 02 与人类对齐的自动化评估 03 更全面的个性化数据集 04 实验结果 面对层出不穷的个性化图像生成技术&#xff0c;一个新问题摆在眼前&#xff1a;缺乏统一标准来衡量这些生成的图片是否符合人们的喜好。 对此&#xff0c;来自清华大…

心理辅导平台系统

摘 要 中文本论文基于Java Web技术设计与实现了一个心理辅导平台。通过对国内外心理辅导平台发展现状的调研&#xff0c;本文分析了心理辅导平台的背景与意义&#xff0c;并提出了论文研究内容与创新点。在相关技术介绍部分&#xff0c;对Java Web、SpringBoot、B/S架构、MVC模…

lvs+上一章的内容

书接上回这次加了个keepalived 一、集群与分布式 1.1 集群介绍 **集群&#xff08;Cluster&#xff09;**是将多台计算机组合成一个系统&#xff0c;以解决特定问题的计算机集合。集群系统可以分为以下三种类型&#xff1a; **LB&#xff08;Load Balancing&#xff0c;负载…

Golang | Leetcode Golang题解之第203题移除链表元素

题目&#xff1a; 题解&#xff1a; func removeElements(head *ListNode, val int) *ListNode {dummyHead : &ListNode{Next: head}for tmp : dummyHead; tmp.Next ! nil; {if tmp.Next.Val val {tmp.Next tmp.Next.Next} else {tmp tmp.Next}}return dummyHead.Next …

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 数字排列游戏(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

【论文复现】——基于LM优化的NDT点云配准算法

目录 一、算法原理1、论文概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 1、论文概述 传统的正态分布变换配准算法处理初始位姿变换相…

修改网络的结构用于预训练

目录 一、模型准备 二、修改结构 1、在网络中添加一层 2、在classifier结点添加一个线性层 3、修改网络中的某一层(features 结点举例&#xff09; 4、替换网络中的某一层结构&#xff08;与第3点类似&#xff09; 5、提取全连接层的输入特征数和输出特征数 6、删除网络…

springboot + Vue前后端项目(第二十一记)

项目实战第二十一记 写在前面1. springboot文件默认传输限制2. 安装视频插件包命令3. 前台Video.vue4. 创建视频播放组件videoDetail.vue5. 路由6. 效果图总结写在最后 写在前面 本篇主要讲解系统集成视频播放插件 1. springboot文件默认传输限制 在application.yml文件中添…

《昇思25天学习打卡营第2天|快速入门》

文章目录 前言&#xff1a;今日所学&#xff1a;1. 数据集处理2. 网络的构建3. 模型训练4. 保存模型5. 加载模型 总体代码与运行结果&#xff1a;1. 总体代码2. 运行结果 前言&#xff1a; 今天是学习打卡的第2天&#xff0c;今天的内容是对MindSpore的一个快速入门&#xff0…

Selenium IDE 的使用指南

Selenium IDE 的使用指南 在自动化测试的领域中&#xff0c;Selenium 是一个广为人知且强大的工具集。而 Selenium IDE 作为其中的一个组件&#xff0c;为测试人员提供了一种便捷且直观的方式来创建和执行自动化测试脚本。 一、Selenium IDE 简介 Selenium IDE 是一个用于录…

第十三章 常用类

一、包装类 1. 包装类的分类 &#xff08;1&#xff09;针对八种基本数据类型相应的引用类型—包装类 &#xff08;2&#xff09;有了类的特点&#xff0c;就可以调用类中的方法。 2. 包装类和基本数据的转换 jdk5 前的手动装箱和拆箱方式&#xff0c;装箱&#xff1a;基本…

【Qt】信号和槽机制

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

操作系统之《PV操作》【知识点+详细解题过程】

1、并发进程 &#xff1a; 并发的实质是一个处理器在几个进程之间的多路复用&#xff0c;并发是对有限的物理资源强制行使多用户共享&#xff0c;消除计算机部件之间的互等现象&#xff0c;以提高系统资源利用率。 &#xff08;1&#xff09;并发进程——互斥性&#xff1a; 进…