[总结]音视频基础知识·一

2023-11-01

目前状态:音视频领域知识零基础
已经掌握理论或技能:

1. 数学:高等数学、概率论与数理统计、线性代数
2. 计算机:计算机操作系统原理、计算机网络、C/C++语言
3. 信号处理:数字信号处理、信号与系统
4. 嵌入式:单片机原理与应用、Linux基础知识

本文主要参考资料:

1. 《一代高效视频编码H.265/HEVC:原理、标准与实现》,简称《原理》
2. 《H.265/HEVC视频编码:新标准及其扩展》,简称《扩展》
3. 《数字图像处理》冈萨雷斯版
4. 《电视原理》姜秀华

备注:在阅读或研究H.265的标准文档或是解析文件的时候,要理解“基本语法表示”,参考如下:
《扩展》10.1.2基本语法表示:术语、描述、元素、元素的描述符

掌握知识目标
本次学习,总体上为音视频基础知识:

1. 视频、图像、音频的格式
2. 信息论以及压缩编码入门
3. 音视频质量评价方法
4. 补充知识

1.视频、图像、音频的格式
主要理解各个“层面”的数据格式,及其使用场合。

1.1流媒体:本暂时不提及,留作其他博文编写。

1.2视频文件:

1. 首先理解MP4、FLV两个封装格式,MP4显然是我们日常生活中遇见的视频文件格式类型。
2. 理解H.264、MPEG-2两个编码格式。

1.3图像数据:
一般来说,有L分量、C分量(亮度分量、色度分量),这意味着,一幅完整的图像,将分为几部分来存放。
视频图像格式的理解思路:
无论什么情况,请维基百科,才能接下来:
1.首先,不是马上去看yuv格式,而是看它到底是怎么存储的,因为最终编写代码获取图像,解决一个疑问:图像跨距的基本概念
2.接着,知道图像跨距的概念,它将会出现在哪里?yuv图像的stried和plane,理解一幅图像有效的部分
值得一提的是:上面2还提供了一个转换的例子,帮助理解其原理及其应用场景
3.讨论yuv的格式:yuv格式浅析(Semi-Planar、Planar、Packet)。注意大小端问题
需要针对yuv420sp和yuv420p更详细(计算与图像格式表示,这样就可以理解如何从yuv420sp转换到yuv420p)
4.转换公式yuv与rgb的转换
5.补充yuv格式的两种(packet或planar)的详细表格,提供查阅

2.信息论以及压缩编码入门
视频编码早已有成熟的数学理论支持和工程技术实现,需要理解好理论才能理解开源库,进而修改代码,实现功能。

2.1信息论:
暂时想不到一个好的解析切入点,不想提及太多的信息论的原理(香农三定理等),还是想一针见血地指明:信息论在音视频开发过程中需要使用到的知识点。这样最好,该点以后补充。
经过一段时间的考虑,发现先有问题,再给出信息论定理,然后再讲述压缩编码具体做法,会更好。

提出疑问:

1. 为什么需要压缩,为什么可以压缩,压缩的标准是什么(或者说是压缩的极限是什么)
2. 如何实现压缩
3. 如何评价压缩的实际效果

其实还有一种解释方法:就是根据从实际的编码模型建立所使用到的编码理论来解释几个定理。

1. 在实际编码过程中,我们需要根据实际的网络情况(信道宽带和传输延时)来调整码率。那么,码率控制属于率失真优化范畴,是从率失真理论(香农第三定理)而来的。

2. 率失真理论是对无失真变长信源编码定理(香农第一定理)的补充,能够在能容忍的失真度下进一步减少码率。

2.2压缩编码入门:
备注:以下两部分内容,主要参考《电视原理》姜秀华编 的第8章学习。

JPEG图像压缩过程(变换、量化、编码),作为图像压缩的原始做法,其他压缩都有它的影子。同时,下面讲述的MPEG-2视频正是由一个一个的图像形成的。可见,先理解图像压缩(JPEG),再理解视频压缩(MPEG-2)是合理的。

MPEG-2视频压缩的混合编码模型,作为视频压缩的始祖,必须通解。以后的H.264、H.265都是这个模型的延伸和加强。

备注:下面是补充的一些知识
纹理特征

3.音视频评价方法

在评价之前,同时需要了解一下人眼视觉特性,为主观评价做基础。《电视原理》第一章

视敏特性:不同的波长(7种)的相对视敏函数曲线
光的度量:光能、光通量、发光强度(光源)、面发光度(光源)与照度(被照物体)、亮度(光源与被照物体)

亮度感觉和亮度视觉范围特性:

1. 人眼的感光作用具有适应性:给予人眼很高的亮度范围
2. 亮度视觉范围:在高亮度范围内,人能同时感觉到的上下限亮度
3. 可见度阈值:亮度级差是指在亮度L基础上增加一个最小亮度,人刚好能够感觉到,则这两个亮度差为可见度阈值
4. 视觉掩盖效应:在空间或时间上不均匀的背景中测量可见度阈值,可见度阈值就会增大,即人眼会丧失分辨一些亮度的能力。
5. 视亮度:可见度阈值随亮度变化,即说明人眼的视亮度(即亮度感觉)决定与相对亮度的变化。

    1. 相同的亮度感觉,在不同的平均亮度(背景亮度)下是对应不同的亮度。
    2. 无需重现景物的真实亮度,只需保证重现图像与实际景物在主观感觉上具有相同的对比度C和亮度级差(亮度层次)n,就能给人以真实的感觉。
    3. 人眼不能察觉的亮度差别,比如过量或过暗的部分和变换非常快的细节部分,在重现图像上也无需精确复制出来。

对比度和亮度层次:

1. 景物或重现图像最大、最小亮度Lmax、Lmin的比值称之为对比度。
2. 画面最大亮度与最小亮度之间可分辨的亮度级差数称为亮度层次(灰度层次);

人眼能分辨的亮度层次n与画面对比度C的对数成正比,与对比度灵敏度阈值成反比。

视觉惰性和闪烁感觉:
视觉惰性:

1. 人眼视觉建立和消失过程的滞后效应,称为视觉惰性。
2. 建立时间非常短暂,短暂的光刺激比较长时间的光刺激要更加醒目,海上航标采用断续灯光。
3. 消失过程却有一个稍长的渐衰残留过程(视觉暂留、视觉残留,约0.05~0.2S),电视显示技术。视觉上始终保留有景物存在的印象,此时的重复频率称为融合频率。

闪烁感觉:

1. 即当脉冲光的重复频率不够高时,人眼会产生一明一暗的交替变化的感觉
2. 光源不引起闪烁感觉的最低频率称为临界闪烁频率

    1. 脉冲光源亮度和背景亮度差值越大,临界闪烁频率越高;
    2. 明亮时间的占空比越大,临界闪烁频率越低。

人眼的分辨力:

音视频质量必须要有一套完善的评价方法,作为验收与测试的依据。

1. 主观评价:
2. 客观评价:

4.补充知识

视频的“分离”与“合成”、“编码”与“解码”浅析,链接

1. 合成与分离的对象和作用?
2. 合并的对象和作用?其反作用:分割(切割、剪切)的对象和作用?
3. 滤镜的组成(此处滤镜并非指对图像效果处理的滤镜)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[总结]音视频基础知识·一 的相关文章

  • (ffmpeg)ffmpeg+SDL的简单播放器(雷霄骅)更新版

    代码源自雷神 一个是播放音频的demo 可以播放MP3和AAC 但是MP3应该是没有封面的 另一个是播放ts格式的视频 没有声音 源码可以到雷神博客下载 但是因为ffmpeg库的更新问题 并不能直接在ubuntu下直接运行 笔者做了修改 在
  • Flask读取RTSP视频流,及其简单的一个案例

    Flask读取RTSP视频流 及其简单的一个案例 此章节包括通过是使用Flask可以实时地显示RTSP视频流 代码确实非常简单 源于Github 主要为为Nvidia Deepstream极致细节 3 Deepstream Python R
  • 视频稳像(Video Stabilization)

    原文 https blog csdn net hjl240 article details 52683738 开源 关键词 Video Stabilization 不错 https github com yaochih awesome vi
  • Android:播放UDP流例如udp://@239.0.0.3:8218

    成功实现播放udp github下载 求大佬们给个star GitHub YangWenlong71 udpplayer 基于ijk重新编译 未做删减几乎全能的安卓视频播放器 支持播放UDP https http 等 分割线 研究思路及结果
  • rust + ffmpeg + sdl2 视频播放器,用纯RUST实现音视频流媒体服务

    Rust是一门系统编程语言 专注于安全 尤其是并发安全 支持函数式和命令式以及泛型等编程范式的多范式语言 RTMP协议确实复杂 在做这个项目之前 看过很多帖子 看过官方文档 但总是感觉不能彻底的理解清楚 在实现过一遍此协议之后 感觉清楚了不
  • Qt视频播放器[QMediaPlayer+QVideowidget]

    目录 参考 一 安装K Lite 解码器 二 Qt代码结构 VideoPlayer pro main cpp videoplayer h 播放器 videoplayer cpp 播放器 videoplayer ui 播放器 playersl
  • 音视频学习笔记(雷神)—技术解析

    音视频技术解析 封装技术 视频压缩编解码 音频压缩编解码 这是技术层 流媒体传输协议 这是网络层 视频播放器解析 解协议 从视频播放器的角度做解析 拿到传输而来的视频数据后 首先要解协议 传输协议 自然的本地视频经过硬盘传输数据自然没有解协
  • 从mpeg ts文件中提取I帧(6):I帧的显示

    I帧的显示依赖于opencv 这里用到的版本是3 4 0 显示的数据是pes解码后的rgb数据 代码比较简单 用opencv主要考虑到以后可以对ts流进行一些特征识别 include
  • 【ffmpeg基础】ffmpeg音频编码

    一 aac编码 输入raw音频编码为AAC ffmpeg i input wav acodec aac y input aac 通过 acodec来指定音频编码器 视频编码器为 vcodec 也可以使用 c a来指定音频编码器 ffmpeg
  • 音频增加噪声低通滤波降噪的过程

    啊 clear all close all clc s Fsample B wavread music wav Ts 1 Fsample M length s 获取音频的数据长度 m 0 M 1 figure subplot 3 1 1 p
  • Downie 4 4.6.12 MAC上最好的一款视频下载工具

    Downie for Mac 简介 Downie是Mac下一个简单的下载管理器 可以让您快速将不同的视频网站上的视频下载并保存到电脑磁盘里然后使用您的默认媒体播放器观看它们 Downie 4 Downie 4 for Mac Downie
  • vue+java实现在线播放mp4视频

    首先如果本地的mp4视频可以播放 但是在网页就显示视频格式不正确 可能原视频不是mp4格式的 更改后缀名为mp4了 但是在网页上还是无法播放 可以用 ffmpeg转换视频格式 一般遇到格式问题都是视频格式不对 需要专门的工具来转换 java
  • (十)老照片修复、图像超分、图片提高分辨率、图片高清化、图片清晰化、黑白图片上色、人脸祛斑、美颜、人体瘦身、图像去噪、人像抠图、批量处理、视频提高分辨率、视频逐帧修复

    十 老照片修复 图像超分 图片提高分辨率 图片高清化 图片清晰化 黑白图片上色 人脸祛斑 美颜 人体瘦身 图像去噪 人像抠图 批量处理 视频提高分辨率 视频逐帧修复 本文的代码的功能是 可以对图片文件 视频批量增强清晰度 对老照片进行修复
  • 高效转码工具Compressor for Mac,让视频处理更轻松

    在现如今的数字时代 视频内容已经成为人们生活中不可或缺的一部分 无论是在社交媒体上分享生活点滴 还是在工作中制作专业的营销视频 我们都希望能够以高质量 高效率地处理和传输视频文件 而Compressor for Mac作为一款强大的视频转码
  • onvif协议笔记

    一 简介 ONVIF官网 ONVIF协议网络摄像机 IPC 客户端程序开发 1 专栏开篇 onvif协议开发 二 gSOAP gsoap官网 1 下载和编译 下载地址 bin sh 指定源码目录 解压源码 GSOAP SRC gsoap 2
  • 【音视频 | AAC】AAC音频编码详解

    博客主页 https blog csdn net wkd 007 博客内容 嵌入式开发 Linux C语言 C 数据结构 音视频 本文内容 介绍AAC音频编码 金句分享 你不能选择最好的 但最好的会来选择你 泰戈尔 本文未经允许 不得转发
  • 开源音频处理代码 speex

    Speex 是一套主要针对语音的开源免费 无专利保护的音频 压缩格式 speex是近年来开发出的一套功能强大的语音引擎 能够实现高质量和低 比特率 的编码 它不仅提供了基于码激励线性预测 CELP 算法的编 解码模块 而且在其最新发布的版本
  • macbook录屏快捷键大全,教你快速录制视频

    有人知道macbook电脑有录屏快捷键吗 现在录屏的速度太慢了 每次打开都要浪费不少时间 要是有录屏快捷键 应该会快很多 有哪位大佬知道吗 教教我 无论是在工作还是生活中 电脑已成为不可或缺的工具 而macbook作为苹果公司推出的一款笔记
  • 软件测试|使用Python轻松裁剪视频

    简介 裁剪视频是在视频编辑和处理中常见的任务之一 Python提供了多种库和工具 可以用来裁剪视频 在本文中 我们将详细讨论如何使用Python来裁剪视频 并提供示例代码 步骤1 环境准备 首先 我们要安装必要的Python库 我们将使用
  • 打造视听盛宴——Resolume Arena 7,一款强大的VJ音视频软件

    在当今数字时代 视觉艺术和音乐的融合已经成为了许多娱乐活动和演出的重要组成部分 而在这个领域中 Resolume Arena 7无疑是一款备受赞誉的VJ音视频软件 Resolume Arena 7具备强大的功能和直观的界面设计 使得用户能够

随机推荐

  • MySQL语句备忘

    MySQL事务随时查看 打开事务随时查看 有效范围当前窗口 SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SQLyog直接点击表在窗口查看即可 比较方便 Navicat需要
  • JavaScript正则表达式

    正则表达式大白话就是一个能判定你的输入内容是否符合设计者规定的一个式子 作用 1 测试字符串是否合规 被用来检测前端输入的字段是否符合要求 常见的场景是注册时输入账号 密码 邮箱等的测试 2 替换某确定的文本 通过js批量替换某个已存在的文
  • R语言学习笔记8

    15 概率 贝叶斯概率 基于当前情形的个人判断使用先验知识来给概率赋值 条件概率 一个事件在另一个发生的事件下发生概率 交集 并集 补集 随机变量 一个偶然的机或者随机出现特定结果的变量 概率分布 将随机变量与定义概率函数相联系是有意义的
  • 头条巨量快手广点通等平台APP&API回传事件注册激活-转化联调-API对接原理代码分析和功能实现

    2022年最新的头条巨量快手广点通等各推广平台APP API回传事件 转化联调注册激活 API对接原理代码分析和功能实现 在商户推广管理当中 经常碰到 需要将用户行为数据回传给推广平台 做转化追踪 事件回传 需要把用户行为数据回传给诸如巨量
  • argsort()函数

    a 6 4 5 b a argsort 1 2 0 意思是 a 1 lt a 2 lt a 0 解释如下 数组a排序后为a1 4 5 6 a argsort返回数组a1中的元素在原数组a中的索引 如何返回数组a中的元素在a1中的索引 2 0
  • LVGL笔记13–lv_led指示灯

    LVGL笔记13 lv led指示灯 LV LED控件就是一个简单的指示灯 在屏幕上绘制一个LED灯样式的图形 这个外形可以通过LV style来修改 通常设置为圆形或小矩形 led灯控件具有0 255级的可调亮度属性 设置为0时代表最暗
  • Python3.11教程4:异常处理

    文章目录 九 异常处理 9 1 异常堆栈跟踪 9 2 异常处理的基本语法 9 3 异常类及异常处理机制 9 4 自定义异常类 9 5 raise触发异常 及其与except的区别 9 6 异常链 9 7 处理多个不相关的异常 9 8 用注释
  • Web目录文件扫描程序(python)

    使用方法 首先找个网站 我们可以看到URL中有php后缀名 说明该网站为php网站 输入参数 URL 文件类型 线程数 即可扫出目录文件 验证一下 访问成功 代码 环境 pycharm python3 9 文件结构 dics文件夹下为各个后
  • 重庆三峡学院计算机英语期末考试,英语语言学试题B卷及答案(重庆三峡学院)

    语言学 英语语言学试题B卷及答案 重庆三峡学院 I Define the following linguistic terms 2 10 20 1 government 2 exocentric construction 3 complem
  • gdb之info/show命令

    一 gdb命令 相对于常见和常用的backtrace break watch step之类的指令来说 这两个都是相对比较小众的功能 只管来说 小众的功能就是使用的人比较少的功能 而使用的比较少的原因也可能是多方面的 一个可能的原因就是大部分
  • 并发程序设计

    ComputeTask h void executeComputeTask ComputeTask c include ComputeTask h include
  • 书摘】程序员成长的10个阶段

    导读 本文节选自机械工业出版社 程序员成长路线图 一书 该书的作者N216 张磊和吉阳一起回忆和总结了自己几十年的程序员成长经历 对当前程序员关心的热点 重点 难点问题给出了自己的看法和建议 通过对程序员的成长阶段进行划分 使得各个阶段的程
  • 什么是Java的跨平台性?原理是什么?

    所谓跨平台性 是指java语言编写的程序 一次编译后 可以在多个系统平台上 运行 实现原理 Java程序是通过java虚拟机在系统平台上运行的 只要该系统可以安 装相应的java虚拟机 该系统就可以运行java程序 机器码再上CPU运行 什
  • 《工程伦理与学术道德》之《工程活动中的环境伦理》

    工程伦理与学术道德 之 工程活动中的环境伦理 工程活动中的环境伦理 4 1 工程活动中环境伦理观念的确立 4 1 1 工业化过程中保护环境的两种思路 4 1 2 工程环境伦理的基本思想 4 1 3 工程环境伦理的核心问题 4 2 工程活动中
  • 22. 面向对象 - 高阶

    Hi 大家好 我是茶桁 之前的课程里面 我们简单的接触了面向对象编程 也和大家讲解了其思想 优缺点 相信上节课程结束之后 大家对面向对象都有了一定的理解 那么我们这节课 就进入面向对象的一些高阶部分 让我们继续来学习一些魔术方法以及Pyth
  • redis mysql_redis和mysql的结合示例

    mysql和redis的区别 mysql是关系型数据库 主要用于存放持久化数据 将数据存储在硬盘中 读取速度较慢 redis是非关系型数据库 即将数据存储在缓存中 缓存的读取速度快 能够大大的提高运行效率 但是保存时间有限 django中使
  • 【python】if __name__==‘__mian__‘ 如何理解,原理及作用

    1 什么是 name 1 为什么使用 name 属性 Python解释器在导入模块时 会将模块中没有缩进的代码全部执行一遍 模块就是一个独立的Python文件 开发人员通常会在模块下方增加一些测试代码 为了避免这些测试代码在模块被导入后执行
  • 【Flutter 1-14】Flutter手把手教程Dart语言——Dart语言引用、import、package使用

    作者 弗拉德 来源 弗拉德 公众号 fulade me 库 import 关键字可以帮助你创建一个模块化和可共享的代码库 代码库不仅只是提供 API 而且还起到了封装的作用 以下划线 开头的成员仅在代码库中可见 使用库 使用import来指
  • 对数学期望、方差、协方差、协方差矩阵的理解

    参考 概率论与数理统计 浙大 关键词 数学期望 数学期望的性质 方差 标准差 方差的性质 协方差 相关系数 协方差矩阵 数学期望 变量分布的中心 数学期望也叫期望 或者均值 E X 完全由X的概率分布决定 若X服从某一分布 也成E X 是该
  • [总结]音视频基础知识·一

    目前状态 音视频领域知识零基础 已经掌握理论或技能 1 数学 高等数学 概率论与数理统计 线性代数 2 计算机 计算机操作系统原理 计算机网络 C C 语言 3 信号处理 数字信号处理 信号与系统 4 嵌入式 单片机原理与应用 Linux基