音视频多媒体编解码器基础-codec

如果要从事编解码多媒体的工作,需要准备哪些更为基础的内容,这里帮你总结完。

因为数据类型不同所以编解码算法不同,分为图像、视频和音频三大类;因为流程不同,可以分为编码和解码两部分;因为编码器实现不同,分为硬编码和软编码;因为编解码硬件位置不同,可以分为片内、片外和独立编解码模块三类;软件常用的框架ffmpeg。

音视频编解码(Audio-Video Coding)是指将音频和视频信号进行压缩编码以及解码还原的过程。

算法通过去除图像中的冗余信息,实现图像的压缩存储和传输。在解码过程中,这些算法将压缩的图像数据恢复为原始的图像信号。

编解码的应用流程:先对原始图像进行压缩编码,然后进行存储和传输,最后在使用或者后处理时再进行解码。

0. 基本原理和概念

音视频编解码的基本原理是利用人的感知系统特性的特点,对音视频信号进行数据压缩,从而便于传输和存储。

编码过程中是将信号转换为数字形式,并应用压缩算法来减少数据量。

解码是编码的逆过程,是将压缩后的数据重新恢复为原始的音视频信号。

编码的一般流程为:采样、量化、压缩、打包。

解码的一般流程为:解包、解码、反量化和数模转换,最终恢复为模拟音视频信号。

编码器压缩两要素:图像相关性、人眼敏感性。

软编码和硬编码

硬编码是指利用显卡GPU、专用的DSP、FPGA、ASIC芯片等硬件进行编码,性能高;软编码是使用CPU进行编码,软件实现直接、简单,参数调整方便,升级易,但性能较硬编码低。

H264软件编码器有JM官方编码实现X264,提供了丰富的视频编码函数库。

H264硬件编码器IP比如LC1860就有芯原Hautro H1,可以直接通过控制硬件实现硬编码。

H264图像序列实现帧间预测

每个序列以一个关键帧(I帧)开始,随后跟着若干个参考前面的帧生成的差别帧(P帧),以及参考前后的帧生成的差别帧(B帧),这种减少I帧数量的方式进一步提高了压缩效率。

以下是音视频编解码的具体过程:

目的音频视频
采样将模拟信号通过采样转换成数字信号连续的模拟音频信号转换为离散的数字信号连续的模拟视频信号转换为离散的数字信号
量化减小数据量将采样后的音频信号量化对采样后的视频信号量化,再进行预处理,包括去噪、滤波、颜色空间转换等
压缩将信号表示为更紧凑的形式对量化后的音频信号进行编码对预处理后的视频进行压缩编码,包括运动估计、变换编码等
打包便于传输和存储将编码后的音频数据组织为数据包将编码后的视频数据组织为数据包

1. 图像编解码算法

图像编解码算法主要包括无损编码、有损编码两个类,顾名思义,无需解释。

无损压缩原理:通过预测编码、霍夫曼编码等技术,减少数据的冗余度同时保持图像信息的完整性。

有损编码原理:通过离散余弦变换(DCT)编码、小波变换编码等技术,利用人眼对图像的感知特性,去除对图像影响较小的信息。

常见的图像压缩算法

图像压缩算法原理应用
JPEG将图像分割成8x8像素方块,DCT变换到频域,再量化以减少数据量网页图片、数码相机
HEIFHEVC(H.265)视频编码技术实现高效压缩智能手机摄像头拍摄的照片
PNG采用LZ77压缩算法和哈夫曼编码等技术实现无损压缩图标、徽标

使用时需要对压缩后的图像数据进行解码处理以还原为原始图像,恢复出压缩前的图像数据进行后处理和显示等。

解码过程包括熵解码、逆量化和逆DCT变换等过程。

2. 视频编解码算法

视频编码通过将视频信号分解成一系列的图像帧,并对这些图像帧进行压缩处理,以减少数据量并提高传输效率。常见的视频编码标准有H.264/AVC、HEVC/H.265、prores(apple)、VP9等。

视频编码方式主要包括帧内压缩(prores)、帧间压缩(H264. H265)。

常见的视频压缩方法

视频压缩算法原理应用
H264|AVC通过减少冗余信息和利用图像特性实现压缩广泛应用于各种视频应用
H265|HEVC比264更高的压缩效率在相同码率下提供更好的视觉质量,在高清视频逐渐应用
ProRes通过变换编码、运动补偿、DCT实现压缩苹果开发的一种高质量、无损和可编辑的视频编解码器

3. 音频编解码算法

常见的音频编码标准有MP3、AAC等。这些标准采用了一系列复杂的算法和技术来实现高效的音频压缩。在编码过程中,音频信号被转换为数字形式,并应用特定的压缩算法来减少数据量。解码过程则是将压缩后的音频数据恢复为原始的音频信号。

音频编码的过程也是包括:模拟信号采样,采样后的信号量化,之后进行编码得到数字音频信号。

音频解码的过程包括:加盟其首先对音频进行解包提取音频数据,然后将使用编码时对应的解码算法进行解码获得原始信号,然后通过反量化操作恢复为连续的近似值,最后通过重构把之前的信号换换成模拟音频信号。

音频输入输出的实际流程:

播放应用从存储中读取音频封装格式的文件(比如mp3),播放器调用解码模型进行解码成PCM数据,最终送到音频驱动去播放。

而在录音时,音频驱动接收采样获得的PCM数据,给到应用程序,应用调用编码模型进行编码,再调用存储模型进行存储。

常见的音频压缩方法

音频压缩方式原理应用
PCM脉冲编码调制将模拟音频信号转换为数字信号的技术,是一种未压缩的音频原始数据流。可以理解为音频中类似“视频中的YUV",实际播放的音频原始数据。
MP3利用心理声学模型去除人耳察觉不到的音频成分,编码过程在量化后增加声学分析以及霍尔曼编码等步骤。广泛应用音频文件如音乐歌曲等。
AAC(Advanced Audio Codin)使用预测编码和变换变化技术,实现了更高效的音频编码。广泛应用于广播和流媒体等。

音频编解码还需要考虑音频的质量、采样率、比特率和声道数等因素。这些因素直接影响音频的听觉效果和传输效率。

4. codec片外芯片硬件

CODEC作用

Codec负责音频信号的模拟/数字转换(A/D和D/A转换),以及音频信号的编码和解码。

CODEC芯片的选择,决定了模拟音频输入输出质量的好坏,在音频加速器模块中,决定数字信号质量的好坏。

示例

以音频芯片CODEC ALC5640为例,ALC5640芯片使用i2c1接口的控制总线,数据传输通过i2s0接口。

在这里插入图片描述

5. 独立编解码器

以上为常见的芯片内编解码模块的方案,但是也会有一类是独立的编解码器,通过外部接口的方式实现音视频编解码,从而扩展主板的能力,提高硬件适应性。

在这里插入图片描述

海康威视DS-6700HUH音视频编码器为例。

支持HDTVI、HDCVI、CVBS和AHD的摄像头输入信号,采用H.265或者H.264标准视频编码,可同时对四路1080p分辨率的视频信号进行实时编码,支持丰富的网络协议,可以通过网口,把视频流传送到网络设备上。

网络另一端的Android终端通过网络终端接收视频信号,并把接收视频显示在Android终端的屏幕上,默认显示音视频编码器视频流的方式,通过浏览器输入默认地址192.168.1.64,并根据提示下载插件,即可实现远程摄像头视频的实时显示。

音视频编解码器的具体使用步骤如下:

\1. 给音视频编码器和操控端上电,音视频编码器网口与操控端网口相连,编码器视频口与模拟摄像头相连。

\2. 设置操控端IP与音视频编码器默认的IP在同一网段,DS-6700HUH默认的IPv4地址是192.168.1.64。

\3. 在Android操控端的浏览器中输入DS-6700HUH的默认地址192.168.1.64。

\4. 在激活界面输入默认的管理员账号,用户名是admin,并创建登录密码,首次登录要根据提示信息安装浏览器插件。

\5. 在设置界面中选择“配置->网络->基本设置->TCP/IP”,可实现对音视频编码器的网络进行设置。

\6. 最后进入预览界面,单击界面的预览框即可打开或者关闭预览图像。

6. ffmpeg软件框架

通过ffmpeg实现编解码和所有软件操作。

FFmpeg是一个开源的多媒体框架,使用广泛,几乎能够解码、编码、转码、mux、demux、过滤和播放所有已知格式的音视频文件。(之后独立总结一章,这个很重要)
在这里插入图片描述
系列收官之作,最近陆续把一些camera相关驱动岗位的基础整理完毕,希望对你有所帮助。

计划2025多做整理,比2024翻倍的内容在路上,您点赞和支持,就是继续优化的动力,拜谢!

最后祝您2025新年快乐!

END

其他你可能感兴趣的驱动基础:

摄像头camera驱动开发基础-MIPI和V4L2

摄像头camera驱动开发基础-USB和UVC

影像显示驱动基础-MIPI和I2C

视频语音驱动基础-I2S和tinyALSA

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

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

相关文章

AI大模型开发原理篇-1:语言模型雏形之N-Gram模型

N-Gram模型概念 N-Gram模型是一种基于统计的语言模型,用于预测文本中某个词语的出现概率。它通过分析一个词语序列中前面N-1个词的出现频率来预测下一个词的出现。具体来说,N-Gram模型通过将文本切分为长度为N的词序列来进行建模。 注意:这…

Windows系统本地部署deepseek 更改目录

本地部署deepseek 无论是mac还是windows系统本地部署deepseek或者其他模型的命令和步骤是一样的。 可以看: 本地部署deepsek 无论是ollama还是部署LLM时候都默认是系统磁盘,对于Windows系统,我们一般不把应用放到系统盘(C:)而是…

知识库管理如何推动企业数字化转型与创新发展的深层次探索

内容概要 在当今数字化转型的大背景下,知识库管理日益显现出其作为企业创新发展的核心驱动力的潜力。这种管理方式不仅仅是对信息的存储与检索,更是一种赋能,以提升决策效率和员工创造力。企业能够通过系统地整合和管理各类知识资源&#xf…

商品列表及商品详情展示

前言 本文将展示一段结合 HTML、CSS 和 JavaScript 的代码&#xff0c;实现了一个简单的商品展示页面及商品详情&#xff0c;涵盖数据获取、渲染、搜索及排序等功能。 效果展示 点击不同的商品会展示对应的商品详情。 代码部分 代码总体实现 <!DOCTYPE html> <htm…

论文阅读:Realistic Noise Synthesis with Diffusion Models

这篇文章是 2025 AAAI 的一篇工作&#xff0c;主要介绍的是用扩散模型实现对真实噪声的仿真模拟 Abstract 深度去噪模型需要大量来自现实世界的训练数据&#xff0c;而获取这些数据颇具挑战性。当前的噪声合成技术难以准确模拟复杂的噪声分布。我们提出一种新颖的逼真噪声合成…

【汽车电子架构】AutoSAR从放弃到入门专栏导读

本文是汽车电子架构&#xff1a;AutoSAR从放弃到入门专栏的导读篇。文章延续专栏文章的一贯作风&#xff0c;从概念与定义入手&#xff0c;希望读者能对AutoSAR架构有一个整体的认识&#xff0c;然后对专栏涉及的文章进行分类与链接。本文首先从AutoSAR汽车软件架构的概念&…

毕业设计--具有车流量检测功能的智能交通灯设计

摘要&#xff1a; 随着21世纪机动车保有量的持续增加&#xff0c;城市交通拥堵已成为一个日益严重的问题。传统的固定绿灯时长方案导致了大量的时间浪费和交通拥堵。为解决这一问题&#xff0c;本文设计了一款智能交通灯系统&#xff0c;利用车流量检测功能和先进的算法实现了…

FPGA|使用quartus II通过AS下载POF固件

1、将开发板设置到AS下载挡位&#xff0c;或者把下载线插入到AS端口 2、打开quartus II&#xff0c;选择Tools→Programmer→ Mode选择Active Serial Programming 3、点击左侧Add file…&#xff0c;选择 .pof 文件 →start 4、勾选program和verify&#xff08;可选&#xff0…

适合超多氛围灯节点应用的新选择

文章目录 1.前言2.芯片简介2.1 高动态RGB照明2.2 灵活的通信模式2.3 精确的颜色控制2.4 高性能与可靠性2.5 易于集成与控制 3.硬件介绍3.1 方案框图3.2 通信模式3.3 器件选型 4.基础操作4.1 基础操作示例4.2 状态机4.3 启动行为4.4 诊断 5 颜色控制和温度稳定化5.1 颜色控制5.2…

MATLAB-Simulink并行仿真示例

一、概述 在进行simulink仿真的过程中常常遇到CPU利用率较低&#xff0c;仿真缓慢的情况&#xff0c;可以借助并行仿真改善这些问题&#xff0c;其核心思想是将参数扫描、蒙特卡洛分析或多工况验证等任务拆分成多个子任务&#xff0c;利用多核CPU或计算集群的并行计算能力&…

运算符重载(输出运算符<<) c++

我们来看下面这个Bug 报错1&#xff1a;打印整形&#xff08;int&#xff09;可以直接打印&#xff0c;打印字符&#xff08;char&#xff09;也可以直接打印&#xff0c;那是因为本身就已经给我们的内置类型准备好了一个输出运算符&#xff0c;可以直接用&#xff0c;但是我们…

【C++】类和对象(5)

目录 一、构造函数补充1、初始化列表 二、类型转换三、static成员四、友元1、友元函数2、友元类 五、内部类六、匿名对象 一、构造函数补充 对于之前讲解的构造函数&#xff0c;还有一些更深层次的内容要进行补充&#xff0c;接下来进行补充内容的讲解。 1、初始化列表 在我…

反向代理模块b

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0c;将从服务器上得到的结果返回给客户端&#xff0c;此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说&#xff0c;反向代理就相当于…

Python - Quantstats量化投资策略绩效统计包 - 详解

使用Quantstats包做量化投资绩效统计的时候因为Pandas、Quantstats版本不匹配踩了一些坑&#xff1b;另外&#xff0c;Quantstats中的绩效统计指标非常全面&#xff0c;因此详细记录一下BUG修复方法、使用说明以及部分指标的内涵示意。 一、Quantstats安装及版本匹配问题 可以…

C#,入门教程(13)——字符(char)及字符串(string)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(12)——数组及数组使用的基础知识https://blog.csdn.net/beijinghorn/article/details/123918227 字符串的使用与操作是必需掌握得滚瓜烂熟的编程技能之一&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; C#语言实…

主流的AEB标准有哪些?

目录 1、AEB的技术构成与工作原理 2、典型应用场景举例 3、AEB的功能分类 4、AEB系统性能评估的关键因素 5、全球AEB技术标准概览 5.1、联合国欧洲经济委员会&#xff08;UN ECE&#xff09; 5.2、美国NHTSA法规 5.3、中国标准 5.4、印度AIS 185 5.5、澳大利亚ADR法规…

Linux网络 | 网络层IP报文解析、认识网段划分与IP地址

前言&#xff1a;本节内容为网络层。 主要讲解IP协议报文字段以及分离有效载荷。 另外&#xff0c; 本节也会带领友友认识一下IP地址的划分。 那么现在废话不多说&#xff0c; 开始我们的学习吧&#xff01;&#xff01; ps&#xff1a;本节正式进入网络层喽&#xff0c; 友友们…

基于Python的药物相互作用预测模型AI构建与优化(上.文字部分)

一、引言 1.1 研究背景与意义 在临床用药过程中,药物相互作用(Drug - Drug Interaction, DDI)是一个不可忽视的重要问题。当患者同时服用两种或两种以上药物时,药物之间可能会发生相互作用,从而改变药物的疗效、增加不良反应的发生风险,甚至危及患者的生命安全。例如,…

TCL C++开发面试题及参考答案

进程和线程的区别 进程和线程都是操作系统中重要的概念,它们在很多方面存在着明显的区别。 从概念上来说,进程是资源分配的基本单位,每个进程都有自己独立的地址空间、内存、文件描述符等资源。例如,当我们在计算机上同时运行多个应用程序,像浏览器、文本编辑器等,每个应…

如何获取当前的位置信息

文章目录 1 概念介绍2 使用方法3 示例代码3 体验分享 我们在上一章回中介绍了如何实现滑动菜单相关的内容&#xff0c;本章回中将介绍如何获取位置信息.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的获取位置信息本质上是获取当前手机所在位置的…