音视频入门基础理论知识

文章目录

  • 前言
  • 一、视频
    • 1、视频的概念
    • 2、常见的视频格式
    • 3、视频帧
    • 4、帧率
    • 5、色彩空间
    • 6、采用 YUV 的优势
    • 7、RGB 和 YUV 的换算
  • 二、音频
    • 1、音频的概念
    • 2、采样率和采样位数
      • ①、采样率
      • ②、采样位数
    • 3、音频编码
    • 4、声道数
    • 5、码率
    • 6、音频格式
  • 三、编码
    • 1、为什么要编码
    • 2、视频编码
      • ①、H.26X 系列
      • ②、MPEG 系列
      • ③、其他系列:
    • 3、音频编码
      • ①、ADIF
      • ②、ADTS
    • 4、硬解码和软解码
      • ①、软解码
      • ②、硬解码
    • 5、音视频容器


前言

本节介绍了音视频的基本原理知识以及编码相关概念。


一、视频

1、视频的概念

视频(Video) 泛指将一系列静态影像以电信号的方式加以捕捉、 纪录、 处理、 储存、 传送与重现的各种技术。

连续的图像变化每秒超过 24 帧(frame,fps) 画面以上时, 根据视觉暂留原理, 人眼无法辨别单幅的静态画面; 看上去是平滑连续的视觉效果, 这样连续的画面叫做视频

2、常见的视频格式

avi,mov,mp4,wmv,flv,mkv…

3、视频帧

, 是视频的一个基本概念, 表示一张画面, 如翻页动画书中的一页, 就是一帧。一个视频就是由许许多多帧组成的。

4、帧率

帧率, 即单位时间内帧的数量, 单位为: 帧/秒 或 fps(frames per second) 。 如动画书中, 一秒内包含多少张图片,图片越多, 画面越顺滑, 过渡越自然。

帧率的一般以下几个典型值:

  • 24/25 fps: 1 秒 24/25 帧, 一般的电影帧率;
  • 30/60 fps: 1 秒 30/60 帧, 游戏的帧率, 30 帧可以接受, 60 帧会感觉更加流畅逼真。

85 fps 以上人眼基本无法察觉出来了, 所以更高的帧率在视频里没有太大意义。

5、色彩空间

这里我们只讲常用到的两种色彩空间。

  • RGB: RGB 的颜色模式应该是我们最熟悉的一种, 在现在的电子设备中应用广泛。通过 R G B 三种基础色, 可以混合出所有的颜色;
  • YUV: 这里着重讲一下 YUV, 这种色彩空间并不是我们熟悉的。 这是一种亮度色度分离的色彩格式。

早期的电视都是黑白的, 即只有亮度值, 即 Y。 有了彩色电视以后, 加入了 UV 两种色度, 形成现在的 YUV, 也叫 YCbCr

  • Y: 亮度, 就是灰度值。 除了表示亮度信号外, 还含有较多的绿色通道量;
  • U: 蓝色通道与亮度的 差值
  • V: 红色通道与亮度的差值

问:为什么没有绿色通道与亮度的差值呢?
答:三基色原理是根据它们的比例显示不同的颜色,假如它们的总和为 1,那么有了蓝色和红色的比例值,就无需记录绿色了,因为 1 -(红色+绿色比例)= 绿色比例;因此我们用尽少的值来存储这些,存下来的值就是真正的一个像素点的值。

举个例子:
下图是正常的一张图像
在这里插入图片描述
下图是 Y,即亮度的值
在这里插入图片描述
下图是 U,即蓝色与亮度的差值
在这里插入图片描述
下图是 V,即红色与亮度的差值
在这里插入图片描述

6、采用 YUV 的优势

人眼对亮度敏感对色度不敏感, 因此减少部分 UV 的数据量, 人眼却无法感知出来, 这样可以通过压缩 UV 的分辨率, 在不影响观感的前提下, 减小视频的体积

7、RGB 和 YUV 的换算

  • Y = 0.299R + 0.587G + 0.114B
  • U = -0.147R - 0.289G + 0.436B
  • V = 0.615R - 0.515G - 0.100B
  • R = Y + 1.14V
  • G = Y - 0.39U - 0.58V
  • B = Y + 2.03U

二、音频

1、音频的概念

音频数据的承载方式最常用的是脉冲编码调制, 即 PCM。在自然界中, 声音是连续不断的, 是一种模拟信号, 那怎样才能把声音保存下来呢?那就是把声音数字化, 即转换为数字信号

我们知道声音是一种波, 有自己的振幅和频率, 那么要保存声音, 就要保存声音在各个时间点上的振幅。

而数字信号并不能连续保存所有时间点的振幅, 事实上, 并不需要保存连续的信号,就可以还原到人耳可接受的声音

根据奈奎斯特采样定理: 为了不失真地恢复模拟信号, 采样频率应该不小于模拟信号频谱中最高频率的 2 倍。

根据以上分析, PCM 的采集步骤分为以下步骤:模拟信号 -> 采样 -> 量化 -> 编码 -> 数字信号

2、采样率和采样位数

①、采样率

采样率, 即采样的频率。

上面提到, 采样率要大于原声波频率的 2 倍, 人耳能听到的最高频率为 20kHz, 所以为了满足人耳的听觉要求, 采样率至少为 40kHz通常为 44.1kHz, 更高的通常为 48kHz
注意: 人耳听觉频率范围[20Hz, 20KHz]

②、采样位数

涉及到上面提到的振幅量化。 波形振幅在模拟信号上也是连续的样本值而在数字信号中, 信号一般是不连续的, 所以模拟信号量化以后, 只能取一个近似的整数值, 为了记录这些振幅值, 采样器会采用一个固定的位数来记录这些振幅值, 通常有 8 位、 16 位、 32 位
注意: 位数越多, 记录的值越准确, 还原度越高。 但是占用的硬盘空间越大。

位数最小值最大值
80255
16-3276832767
32-21474836482147483647

3、音频编码

由于数字信号是由 0,1 组成的, 因此, 需要将幅度值转换为一系列 0 和 1 进行存储, 也就是编码, 最后得到的数据就是数字信号一串 0 和 1 组成的数据。

整个过程如下:
在这里插入图片描述

4、声道数

声道数, 是指支持能不同发声(注意是不同声音) 的音响的个数。

  • 单声道:1 个声道
  • 双声道:2 个声道
  • 立体声道:默认为 2 个声道
  • 立体声道(4 声道):4 个声道

5、码率

码率, 是指一个数据流中每秒钟能通过的信息量, 单位 bps(bit per second) 。

码率 = 采样率 * 采样位数 * 声道数

6、音频格式

常见的音频格式有: CD 格式、 WAVE(*.WAV) 、 AIFF、 MP3、 MIDI、 AAC、 WMA、OggVorbis。

三、编码

1、为什么要编码

这里的编码和上面音频中提到的编码不是同一个概念, 而是指压缩编码

音视频中,其实包含了大量 0 和 1 的重复数据,因此可以通过一定的算法来压缩这些 0 和 1 的数据。

特别在视频中,由于画面是逐渐过渡的,因此整个视频中,包含了大量画面/像素的重复,这正好提供了非常大的压缩空间。因此, 编码可以大大减小音视频数据的大小, 让音视频更容易存储和传送。

未经编码的原始音视频, 数据量到底有多大?
以一个分辨率 1920×1280, 帧率 30 的视频为例:
共:1920×1280=2,073,600(Pixels 像素) ,每个像素点是 24bit;
也就是:每幅图片 2073600×24=49766400 bit,8 bit(位) =1 byte(字节);
所以:49766400bit=6220800byte ≈ 6.22MB。
这是一幅 1920×1280 图片的原始大小(6.22MB),再乘以帧率 30。
也就是说:每秒视频的大小是 186.6MB,每分钟大约是 11GB, 一部 90 分钟的电影,约是 1000GB。 。 。

2、视频编码

视频编码格式有很多,比如 H26x 系列和 MPEG 系列的编码。

  • H26x(1/2/3/4/5) 系列由 ITU(International Telecommunication Union) 国际电讯联盟主导
  • MPEG(1/2/3/4) 系列由 MPEG(Moving Picture Experts Group, ISO 旗下的组织)主导

现在主流的编码格式 H264, 当然还有下一代更先进的压缩编码标准 H265。

所谓视频编码方式就是指能够对数字视频进行压缩或者解压缩(视频解码)的程序或者设备。 通常这种压缩属于有损数据压缩。 也可以指通过过特定的压缩技术,将某个视频格式转换成另一种视频格式。

①、H.26X 系列

  • H.261:主要在老的视频会议和视频电话产品中使用。
  • H.263:主要用在视频会议、 视频电话和网络视频上
  • H.264: H.264/MPEG-4 第十部分,或称 AVC(Advanced Video Coding,高级视频编码),是一种视频压缩标准,一种被广泛使用的高精度视频的录制、压缩和发布格式。
  • H.265:高效率视频编码(High Efficiency Video Coding, 简称 HEVC)是一种视频压缩标准,H.264/MPEG-4 AVC 的继任者。HEVC 被认为不仅提升图像质量,同时也能达到 H.264/MPEG-4 AVC 两倍之压缩率(等同于同样画面质量下比特率减少了50%),可支持 4K 分辨率甚至到超高画质电视,最高分辨率可达到 8192×4320(8K分辨率),这是目前发展的趋势。 直至 2013 年,Potplayer 添加了对于 H.265 视频的解码,尚未有大众化编码软件出现。

②、MPEG 系列

  • MPEG-1 第二部分(MPEG-1 第二部分主要使用在 VCD 上,有些在线视频也使用这种格式。该编解码器的质量大致上和原有的 VHS 录像带相当。)
  • MPEG-2 第二部分(MPEG-2 第二部分等同于 H.262,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统(cable distribution systems)中。)
  • MPEG-4 第二部分(MPEG-4 第二部分标准可以使用在网络传输、广播和媒体存储上。 比起 MPEG-2 和第一版的 H.263,它的压缩性能有所提高。)
  • MPEG-4 第十部分(MPEG-4 第十部分技术上和 ITU-TH.264 是相同的标准,有时候也被叫做“AVC”) 最后这两个编码组织合作,诞生了 H.264/AVC 标准。 ITU-T 给这个标准命名为 H.264, 而 ISO/IEC 称它为 MPEG-4 高级视频编码(Advanced VideoCoding, AVC) 。

③、其他系列:

AMV · AVS · Bink · CineForm · Cinepak · Dirac · DV · Indeo · Video · Pixlet · RealVideo ·RTVideo · SheerVideo · Smacker · Sorenson Video · Theora · VC-1 · VP3 · VP6 · VP7 · VP8 · VP9 · WMV。 因为以上编码方式不常用,不再介绍。

3、音频编码

和视频编码一样,音频也有许多的编码格式,如: WAV、 MP3、 WMA、 APE、 FLAC 等等。这里以 AAC 格式为例,直观的了解音频压缩格式。

AAC 是新一代的音频有损压缩技术,一种高压缩比的音频压缩算法。在 MP4 视频中的音频数据,大多数时候都是采用 AAC 压缩格式。

AAC 格式主要分为两种: ADIF、 ADTS。

①、ADIF

ADIF: Audio Data Interchange Format。 音频数据交换格式

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

ADIF 只有一个统一的头, 所以必须得到所有的数据后解码。

ADIF 数据格式:header | raw_data

②、ADTS

这种格式的特征是它是一个有同步字的比特流, 解码可以在这个流中任何位置开始。它的特征类似于 mp3 数据流格式。

ADTS 一帧 数据格式(中间部分,左右省略号为前后数据帧):
在这里插入图片描述

对比 ADIF 和 ADTS
ADTS 可以在任意帧解码,它每一帧都有头信息。
ADIF 只有一个统一的头,所以必须得到所有的数据后解码。
且这两种的 header 的格式也是不同的,目前一般编码后的都是 ADTS 格式的音频流。

4、硬解码和软解码

在手机或者 PC 上,都会有 CPU、GPU 或者解码器等硬件。通常,我们的计算都是在 CPU 上进行的,也就是我们软件的执行芯片,而 GPU 主要负责画面的显示(是一种硬件加速) 。

①、软解码

就是指利用 CPU 的计算能力来解码,通常如果 CPU 的能力不是很强的时候,一则解码速度会比较慢,二则手机可能出现发热现象。但是,由于使用统一的算法,兼容性会很好。

②、硬解码

指的是利用专门的解码芯片来加速解码。 通常硬解码的解码速度会快很多, 但是由于硬解码由各个厂家实现, 质量参差不齐, 非常容易出现兼容性问题

5、音视频容器

前面我们介绍的各种音视频的编码格式,没有一种是我们平时使用到的视频格式,比如:mp4、rmvb、avi、mkv、mov…
这些我们熟悉的视频格式,其实是包裹了音视频编码数据的容器,用来把以特定编码标准编码的视频流和音频流混在一起, 成为一个文件。

例如: mp4 支持 H264、 H265 等视频编码和 AAC、 MP3 等音频编码。

mp4 是目前最流行的视频格式, 在移动端, 一般将视频封装为 mp4 格式。


我的qq:2442391036,欢迎交流!


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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL-DQL

-----分组查询----- 1.语法: SELECT 字段列表 FROM 表名 [WHERE 条件 ] GROUP BY 分组字段名 [HAVING 分组后过滤条件]; 2.where与having区别 》执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组&…

第 361 场 LeetCode 周赛题解

A 统计对称整数的数目 枚举 x x x class Solution { public:int countSymmetricIntegers(int low, int high) {int res 0;for (int i low; i < high; i) {string s to_string(i);if (s.size() & 1)continue;int s1 0, s2 0;for (int k 0; k < s.size(); k)if …

WPF C# .NET7 基础学习

学习视频地址&#xff1a;https://www.bilibili.com/video/BV1hx4y1G7C6?p3&vd_source986db470823ebc16fe0b3d235addf050 开发工具&#xff1a;Visual Studio 2022 Community 基础框架&#xff1a;.Net 6.0 下载创建过程略 .Net和.Framework 区别是Net是依赖项&#xff…

ASIC-WORLD Verilog(16)综合

写在前面 在自己准备写一些简单的verilog教程之前&#xff0c;参考了许多资料----Asic-World网站的这套verilog教程即是其一。这套教程写得极好&#xff0c;奈何没有中文&#xff0c;在下只好斗胆翻译过来&#xff08;加点自己的理解&#xff09;分享给大家。 这是网站原文&…

Centos 6.5 升级到Centos7指导手册

一、背景 某业务系统因建设较早&#xff0c;使用的OS比较过时&#xff0c;还是centos6.5的系统&#xff0c;因国产化需要&#xff0c;需将该系统升级到BClinux 8.6&#xff0c;但官方显示不支持centos 6.x升级到8&#xff0c;需先将centos6.5升级到centos7的最新版&#xff0c…

【100天精通Python】Day53:Python 数据分析_NumPy数据操作和分析进阶

目录 1. 广播 2 文件输入和输出 3 随机数生成 4 线性代数操作 5 进阶操作 6 数据分析示例 1. 广播 广播是NumPy中的一种机制&#xff0c;用于在不同形状的数组之间执行元素级操作&#xff0c;使它们具有兼容的形状。广播允许你在不显式复制数据的情况下&#xff0c;对不同…

合宙Air724UG LuatOS-Air LVGL API控件--容器 (Container)

容器 (Container) 容器是 lvgl 相当重要的一个控件了&#xff0c;可以设置布局&#xff0c;容器的大小也会自动进行调整&#xff0c;利用容器可以创建出自适应成都很高的界面布局。 代码示例 – 创建容器 cont lvgl.cont_create(lvgl.scr_act(), nil) lvgl.obj_set_auto_re…

北京APP外包开发需要注意的问题

开发APP的过程中&#xff0c;由于开发APP需要投入大量的时间、精力和资源&#xff0c;所以在开始前一定要做好充足的准备和规划。您需要注意以下重点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1…

如何熟练使用vector?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…

数据集收集列表(opencv,机器学习,深度学习)持续更新

opencv 车牌识别数据集 opencv 手写数字识别数据集 机器学习 印第安糖尿病 Pima Indians数据集 &#xff0c;下载地址 Boston波士顿房价数据集 &#xff0c;下载

MetInfo5.0文件包含漏洞

MetInfo历史版本与文件 环境在这里下载&#xff0c;使用phpstudy搭建 我们来看到这个index.php&#xff0c;如下图所示&#xff0c;其中定义了fmodule变量与module变量&#xff0c;其中require_once语句表示将某个文件引入当前文件&#xff0c;在这个代码中&#xff0c;通过r…

PostgreSQL问题记录:column “...“ does not exist

在PostgreSQL中&#xff0c;不论是在pgAdmin中&#xff0c;还是在命令行控制台里面&#xff0c;在SQL语句中表示属性值的总会遇到ERROR: column “…” does not exist这样的错误&#xff0c;比如下面的语句&#xff1a; 解决方案&#xff1a;将 “txt2txt” 的双引号改成单引…

配置本地maven

安装maven安装包 修改环境变量 vim ~/.bash_profile export JMETER_HOME/Users/yyyyjinying/apache-jmeter-5.4.1 export GOROOT/usr/local/go export GOPATH/Users/yyyyjinying/demo-file/git/backend/go export GROOVY_HOME/Users/yyyyjinying/sortware/groovy-4.0.14 exp…

虚拟机的安装

需要的工具 ①VMware Workstation 17 提取链接&#xff1a;https://pan.baidu.com/s/1e2p_wlYwdM-JxbXVMb3W0Q?pwd16ed 提取码&#xff1a;16ed ②Redhat镜像 9.1版本提取链接&#xff1a;https://pan.baidu.com/s/1sJC275e2d_9tPDElC83o2g?pwdss9x 提取码&#xff1a;…

Linux系统Ubuntu配置Docker详细流程

本文介绍在Linux操作系统Ubuntu的18.04及以上版本中&#xff0c;配置开源容器化平台和工具集Docker的详细方法&#xff1b;其中&#xff0c;我们以配置Docker平台的核心组件之一——Docker Engine为例来详细介绍。 首先&#xff0c;大家需要明确&#xff0c;我们常说的Docker&a…

pytorch(b站小土堆学习笔记P1-P15)

P3. Python学习中的两大法宝函数&#xff08;当然也可以用在PyTorch&#xff09; import torch#查看pytorch有哪些指令 print(dir(torch)) print(dir(torch.cuda)) #查看每条指令怎么用 help(torch.cuda.is_available) P4. PyCharm及Jupyter使用及对比 P5 dataset和dataloade…

【算法】滑动窗口

滑动窗口应用场景 关键词&#xff1a; 满足xxx条件&#xff08;计算结果&#xff0c;出现次数&#xff0c;同时包含&#xff09; 最长/最短 子串/子数组/子序列 例如&#xff1a;长度最小的子数组 滑动窗使用思路&#xff08;寻找最长&#xff09; 核心&#xff1a;左右双指…

2021年06月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:逆波兰表达式 逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的逆波兰表示法为* + 2 3 …

基于MQTT协议的物联网关

随着工业领域的不断发展&#xff0c;数字化转型已经成为企业迈向未来的必由之路。在这个数字化浪潮中&#xff0c;HiWoo Box以其强大的功能和创新的设计&#xff0c;在工业物联网领域被越来越多的人所熟知。特别是其基于MQTT协议的物联网关能力&#xff0c;也为企业实现智能化数…

无门槛访问ChatGPT升级版-数据指北AI

大家好&#xff0c;我是脚丫先生 (o^^o) 给小伙伴们介绍ChatGPT升级版不需要任何门槛&#xff0c;不需要单独搞账号&#xff0c;只要邮箱登录的方式&#xff0c;即可访问平台&#xff0c;以用户体验为首要&#xff0c;让所有人都能无门槛的使用目前市面上最强大的AI智能聊天&a…