当前位置: 首页 > news >正文

【入门音视频】音视频基础知识

🌈前言🌈

        这个系列在我学习过程中,对音视频知识归纳总结的笔记。因为音视频相关讲解非常稀少,所以我希望通过这个音视频系列,跟大家一起学习音视频,希望减少初学者在学习上的压力。同时希望也欢迎指出文章的不足。

        本期内容主要讲解音视频基础知识,包含了音视频是如何保存成文件,以及如何通过文件播放的,通过这个流程讲解音视频编解码,封装解封装相关的协议

📁 音视频录制和播放原理

        上图是音视频录制和播放整体的流程,通过这个流程,我们对音视频的格式和协议进行整体的了解。

📁 视频

        一个连续播放的视频文件就是有一串连续的,前后存在相关关系的图像构成的,通过图像中的内存和它们之间的相互关闭表达整个视频文件所包含的消息。

 📂 图像

        一般是指静态图像。图像是指一种在二维平面上通过排列像素(pix)来表达信息的数据组织格式。

1. 位深(度)

        色位深度可以简单理解为表示一个像素的二进制位数,决定了每个像素可以呈现的颜色数量。位深度越高,表示的颜色种类就越多。常用的位深度有 8bit 或 10bit两种。

        ● 8 bit:即用8bit / 1 Byte 表示一个像素值,取值范围是 [0,255]。

        ● 10 bit:用10个bit表示一个像素值,取值范围是[0,1023]。

        上面场景只是单个颜色分量,即灰度图像;如果是彩色图像,每个像素可能包含多个颜色分量(通道)。例如RGB格式的彩色图像,一个完整的图像被分割成蓝绿红三个基色的单色图。

        每个通道位深是8 bit,则RGB格式图像中每个像素需要24 bit (8 bit * 3)表示。

确定颜色位深后,根据图像的宽高尺寸确定图像数据体积。        

        例如1920px * 1080px的RGB图像,位深是8 bit,则数据体积 = 192 * 1080 * 3 约等于 6.22MB左右。

2. 颜色空间

        彩色图像在实际应用场景下发挥了广泛作用,如图像显示和处理等,针对不同的场景,对图像色彩的表达方式有不同的要求。针对不同场景有不同的颜色数据表达方式,即颜色空间。

        颜色空间是一种利用整数区间来表示颜色的模型,其维度可以分为一维,二维,三维等。三维空阿金应用最为广泛,常见的三维颜色空间有RGB格式,YUV格式。本文重点讲解YUV格式。

        YUV格式是一种用于表示图像或视频颜色的色彩空间,它将颜色分为三个分量:亮度(Y)和两个色度(U和V)。这种格式广泛应用于视频压缩和视频传输,因为它与人眼对亮度和色彩的感知特性更为契合。

        y:明度;u:蓝色色度与亮度的差;v:红色色度与亮度的差,图像的每个像素点由yuv三个值来确定。

3. 压缩算法

        无算压缩方法:压缩率比较低,压缩后体积较大,没有信息损失,可通过压缩信息完全恢复原始信息。

        有损压缩方法:压缩率较高,压缩后体积较小,存在信息缺失,压缩后只能近似逼近原始信息,无法完全还原原始信息。

 📂 YUV格式

        组成视频的基本单元图像称为帧,本质与普通静态图没有任何区别。视频中每秒内容所包含的视频帧的数量称为帧率,单位是fps(frame per seoncd)。在各帧图像质量相近的情况下,帧率越高的视频播放越流畅,但是体积,码率也会更高。

        在视频压缩编码中,图像颜色空间通常使用YUV颜色空间。

        YUV采样格式的有:4:4:4、4:2:2、4:2:0。

1. 4:4:4        

        每个亮度像素Y对应一个色度像素U和V,色度分量图的尺寸与亮度分量图的相同。

2. 4:2:2

        每两个亮度像素Y对应一个色度像素U和V,色度分量图的尺寸为亮度分量图的1/2。

3. 4:2:0

        每四个亮度像素Y对应一个色度像素U和V,色度分量图的尺寸为亮度分量图的1/4。

YUV排列格式

1. packet:打包格式,先存储一个yuv,在存储下一个yuv。

2. planar:平面格式,先存储y平面,再存储u平面,在存储v平面。

3. semi-planar:先存储y平面,在存储uv平面。

📂 H.264协议

        应用较为广范的视频编码格式。通过之前我们了解如何计算图像大小,视频就是有一连串的图像组成的,因此如果不对视频进行压缩,那么视频文件就会很大,因此需要对音视频进行编解码。

📂 IBP帧  

I帧(帧内编码图像帧):表示关键帧,不需要其他的画面而生成,解码靠自己就能重构完整的图像。

P帧(前向预测编码图像帧):表示跟前一个关键帧或P帧的差别,P帧是参考帧,利用与前一帧不同点压缩本帧数据,利用空间和时间上的相关性。

B帧(双向预测编码图像帧):本帧与前后帧(I帧、P帧)的差别,B帧压缩率更高,但解码耗费CPU。

GOP(图像序列):两个I帧之间一个图像序列,一个GOP中包含一个I帧。

📂 解码时间戳和显示时间戳

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

● PTS(显示时间戳):这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。

音视频同步方式:

        Audio Master:同步视频到音频。

        Video Master:同步音频到视频。

        External Clock Master:同步音频和视频到外部时钟。

📂 视频主要概念补充

视频码率:kb/s,是指视频文件在单位时间内使用的数据流量,也叫码流率。码率越大,说明单位时间内取样率越大,数据流精度就越高。

视频帧率:fps,通常说一个视频的25帧,指的就是这个视频帧率,即1秒中会显示25帧。帧率越高,给人的视觉就越流畅。

视频分辨率:分辨率就是我们常说的640x480分辨率、1920x1080分辨率,分辨率影响视频图像的大小。

📁 音频

        在音频中,有两个概念比较重要,一个是采集到的原始音频数据PCM,和压缩后的音频数据AAC。

 📂 PCM格式

        为了将模拟信号(声音)数字化,需要进行 采样,量化,编码三个过程。

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

        采样是在离散的时间点上进行的,采样值本身在计算机中也是离散的;采样值的精度取决于它的的多少位表示,即量化。

 📂 AAC协议

        高级音频编码,是一种声音数据的文件压缩格式,分为ADIF和ADTS两种文件格式。

        ADIF:高级数据交换格式,特征是可以确定找到的这个音频的开始,不需要进行音频数据流中间开始的解码,即解码必须在明确定义的开始处进行,常用在磁盘文件中。

        ADTS: 音频数据传输流,特征是有一个同步字的比特流,解码可以再流的任何位置开始。流媒体更常使用的。

 📂 音频主要概念补充

采样频率:每秒钟采样点的个数,常用的采样频率有:

        22000(22kHz): 无线广播。 44100(44.1kHz):CD音质。 48000(48kHz): 数字电视,DVD。 96000(96kHz): 蓝光,高清DVD。 192000(192kHz): 蓝光,高清DVD。

采样精度(采样位深):每个样本点的大小,常用大小为 8bit,24bit。

通道数:单声道,双声道,四声道,5.1声道。

比特率:每秒传输的bit数,单位为:bps(Bit Per Second) 间接衡量声音质量的一个标准。

码率: 压缩后的音频数据的比特率。码率越大,压缩效率越低,音质越好,压缩后数据越大。 码率 = 音频文件大小/时长。

:每次编码的采样单元数,比如MP3通常是1152个采样点作为一个编码单元,AAC通常是1024个采样点作为一个编码单元。

交错模式:数字音频信号存储的方式。数据以连续帧的方式存放,即首先记录帧1的左声道样本和右声道样本,再开始帧2的记录...

非交错模式:首先记录的是一个周期内所有帧的左声道样本,在记录所有右声道的样本。

📁 封装格式

        就是将已经编码压缩好的视频流、音频流及字幕按照一定的方案放到一个文件中,便于播放软件播放。

        H264+AAC封装为FLV或MP4是最为流行的模式。

📁 总结

        以上,就是本期内容,主要讲解了视频图像的YUV格式和H264编码,以及音频的PCM格式和AAC编码。

        如果感觉本期内容对你有帮助,欢迎点赞,关注,收藏Thanks♪(・ω・)ノ

相关文章:

【入门音视频】音视频基础知识

🌈前言🌈 这个系列在我学习过程中,对音视频知识归纳总结的笔记。因为音视频相关讲解非常稀少,所以我希望通过这个音视频系列,跟大家一起学习音视频,希望减少初学者在学习上的压力。同时希望也欢迎指出文章的…...

游戏引擎学习第120天

仓库:https://gitee.com/mrxiao_com/2d_game_3 上次回顾:周期计数代码 我们正在进行一个项目的代码优化工作,目标是提高性能。当前正在优化某个特定的代码片段,已经将其执行周期减少到48个周期。为了实现这一目标,我们设计了一个…...

【Qt之QQuickWidget】QML嵌入QWidget中

由于我项目开始使用Widgets,换公司后直接使用QML开发,没有了解过如何实现widget到qml过渡,恰逢面试时遇到一家公司希望从widget迁移到qml开发,询问相关实现,一时语塞,很尴尬,粗略研究并总结下。 对qwidget嵌…...

Vue 3 + Vite 项目中配置代理解决开发环境中跨域请求问题

在 Vue 3 Vite 项目中,配置代理是解决开发环境中跨域请求问题的常见方法。通过在 Vite 的配置文件中设置代理,可以将前端请求转发到后端服务器,从而避免浏览器的同源策略限制。 1. 创建 Vue 3 Vite 项目 首先,确保你已经安装了…...

Eureka、ZooKeeper 和 Nacos 之间的对比

Eureka、ZooKeeper 和 Nacos 都是分布式系统中常用的服务注册与发现工具,但它们的定位、功能和适用场景有所不同。作为一名开发者,理解它们之间的对比有助于选择合适的技术栈。以下从多个维度进行详细比较: 1. 基本概述 Eureka 来源&#xff…...

CSS中padding和margin属性的使用

在 HTML 中,padding 和 margin 是用于控制元素布局和间距的重要属性。 一、Padding(内边距) 定义:Padding 是指元素内容与元素边框之间的距离。它可以在元素内部创造出空白区域,使得内容不会紧贴着边框。 作用 增加元…...

【Python爬虫(49)】分布式爬虫:在新兴技术浪潮下的蜕变与展望

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…...

网络安全-系统层攻击流程及防御措施

系统层攻击流程涉及多个阶段,攻击者通过逐步渗透以获取控制权或窃取数据。以下是详细的流程及防御措施: 1. 侦察(Reconnaissance) 信息收集: 主动扫描:使用工具如Nmap、Masscan扫描目标IP、开放端口、服务…...

centos 7 安装python3 及pycharm远程连接方法

安装openssl 使用pip3安装 virtualenv的时候会提示WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 这是因为缺少openssl 2.0以上版本 解决办法: 一、先确认版本 openssl version 二、安…...

【llm对话系统】如何快速开发一个支持openai接口的llm server呢

核心思路:使用轻量级 Web 框架,将 OpenAI API 请求转换为你现有推理脚本的输入格式,并将推理脚本的输出转换为 OpenAI API 的响应格式。 快速开发步骤列表: 选择合适的 Web 框架 (快速 & 简单): FastAPI: Python 最佳选择&am…...

跟着柳叶刀数字健康,学习如何通过病理切片预测分子分类对预后的影响|项目复现

小罗碎碎念 项目复现 今天和大家分享一个非常具有参考价值的项目,手把手带着大家复现一篇发表在柳叶刀数字健康的文章。 花了六个小时才完成的这篇推送,信息量非常大,遇到了很多报错问题,但是解决以后的感觉是非常爽的,先给大家展示一下最终的成果——在同一张切片上,通…...

deepseek_清华大学指导手册_pdf_1-5

deepseek_清华大学指导手册_pdf_1-5 无套路,无需关注,无需登录,无需app,直接下载: 下载地址 文件列表: 001_清华大学_DeepSeek从入门到精通.pdf 002_清华大学_DeepSeek如何赋能职场应用.pdf 003_清华大学…...

数据库(MySQL)二

MySQL 六、MySQL索引视图6.1 索引底层原理6.1.1 索引hash算法6.1.2 索引二叉树算法6.1.3 索引平衡二叉树算法6.1.4 索引BTREE树算法6.1.5 普通SQL全表扫描过程 6.2 索引分类6.2.1 按数据结构层次分类6.2.2 按字段数量层次分类6.2.3 按功能逻辑层次分类(面试题&#…...

第15届 蓝桥杯 C++编程青少组中/高级选拔赛 202401 真题答案及解析

第 1 题 【 单选题 】 表达式117 % 16 的结果是( )。 A:0 B:5 C:7 D:10 解析: % 是取模运算符,用于计算两个数相除后的余数。 计算 117 / 16,结果是 7,余数是 5。因此,117 % 16 = 5。答案: B 第 2 题 【 单选题 】 下列选项中,字符数组定义正确的是( …...

《AI大模型趣味实战》第10集:开发一个基于Mermaid的AI绘图网站

《AI大模型趣味实战》第10集:开发一个基于Mermaid的AI绘图网站 抱歉不按顺序出牌,先出一个第10集,第1到第9集慢慢来,后续也不会按顺序,总之凑满36集,可能或补充12集。 AI大模型趣味实战专栏 所有36个主题预…...

androidstudio 运行项目加载很慢,优化方法

一、Android Studio 运行项目加载缓慢可能由多种原因引起,以下是一些优化建议: 1. 升级硬件配置 内存:建议至少 8GB,16GB 或以上更佳。 SSD:使用 SSD 替代 HDD 以加快读写速度。 CPU:多核处理器有助于提…...

python脚本实现接入企微机器人

企业微信中的群聊机器人在日常办公中无处不在,对提升工作效率、保证消息及时送达提供了重要的技术保障。例如:DevOps助手、JIRA、构建通知等;还常常使用在运维服务器中配合Prometheus监控体系及时发送告警信息等 文章目录 源码示例Demo源码处…...

《论面向对象的建模及应用》审题技巧 - 系统架构设计师

论面向对象的建模及应用写作框架 一、考点概述 本论题“论面向对象的建模及应用”主要考察软件测试工程师对面向对象建模技术的理解和应用能力。具体涵盖以下几个方面: 面向对象建模的基本概念 :这包括理解面向对象编程(OOP)的基…...

【Godot4.3】自定义圆角容器

概述 Godot控件想要完全实现现代UI风格,需要进行大量的自定义组件设计。本篇就依托于笔者自己对现代UI设计中的圆角面板元素模仿来制作圆角容器组件。 圆角容器 圆角元素在现代的扁平UI设计中非常常见,在Godot中可以通过改进PanelContainer来或者自定…...

开源RAG主流框架有哪些?如何选型?

开源RAG主流框架有哪些?如何选型? 一、开源RAG框架全景图 (一)核心框架类型对比 类型典型工具技术特征适用场景传统RAGLangChain, Haystack线性流程(检索→生成)通用问答、知识库检索增强型RAGRAGFlow, AutoRAG支持重排序、多路召回优化高精度问答、复杂文档处理轻量级…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨‍&#x1f…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...