news 2026/7/6 13:49:29

音视频上层架构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
音视频上层架构

音视频「数据本质」的绝妙镜像

🎯 音视频底层世界终极对照表(Final Edition)

维度 (Dimension)音频世界 (Audio World)视频世界 (Video World)
内核驱动子系统ALSA(/dev/snd/pcm*)
字符设备,应用层通过mmapread/write拉取 DMA 数据。
V4L2(/dev/video*)
字符设备,基于videobuf2(vb2) 框架管理缓冲区。
有损压缩格式AAC / MP3 / OPUS
利用心理声学模型去除人耳不敏感的频域冗余。
H.264 / H.265 / AV1
利用运动估计与帧间预测去除时间与空间上的视觉冗余。
帧内编码格式
(修正:原“无损/帧内”)
FLAC / ALAC
真正无损压缩,帧内独立解码,不依赖历史数据。
MJPEG / ProRes / FFV1
(注:常规 MJPEG 有损,ProRes 近无损,FFV1 无损)
共同点是仅依赖当前帧内空间,无帧间参考链。
裸数据数学结构一维时间序列 (1D Time Series)
只有时间轴t。多声道数据在数组中交错排列(Interleaved),空间概念极弱。
二维/三维空间矩阵 (2D/3D Spatial Matrix)
明确的Width × Height × Channel空间拓扑。时间轴被解耦为离散的“帧序号”。
裸数据“硬通货”PCM (脉冲编码调制)
采样点数值(如s16le),直接反映声波振幅随时间的变化。
Raw Pixels (YUV/NV12/RGB)
像素分量值,直接反映光强与色度在平面上的空间分布。
典型吞吐量级≈ 1.4 Mbps(CD 品质)
数据量极小,内存带宽毫无压力,L1/L2 Cache 轻松容纳。
≈ 1.5 Gbps(1080p@60fps)
恐怖的数据洪流,现代 SoC 内存带宽的“杀手级”消费者。
内核内存流转机制环形缓冲区 (Ring Buffer)
依赖snd_pcm_hardwareperiods轮转。中断频繁,CPU 主动参与memcpy搬运数据是常态。
队列式缓存池 (Buffer Queue)
依赖vb2dma-buf
工业级强制零拷贝 (Zero-Copy):驱动层只传递文件描述符(fd)指针,严禁应用层做 CPU 内存拷贝(否则 ARM 直接跑崩)。
纯裸数据处理器
(基带/空间变换)
音频 DSP 引擎库
(如libsamplerate,speexdsp, LADSPA)
执行重采样、混音、EQ。纯 CPU 密集型,强时域/频域实时计算。
像素处理与滤镜库
(如 FFmpeglibswscale,libavfilter)
执行色彩空间转换 (CSC)、缩放、卷积滤波。
强依赖硬件加速器(RGA/VPU/GPU),CPU 只做配置,不做像素级运算。
上层高阶框架
(业务路由 vs 算法应用)
PipeWire / PulseAudio
解决跨进程音频流的全局动态路由与策略控制(就像音频的“交换机”)。
OpenCV / RKNN / CUDA
在拿到像素矩阵后,执行不规则的计算机视觉算法与AI 推理(物体检测、分类)。
核心实时性特征延迟敏感型 (Latency-Sensitive)
追求内核SCHED_FIFO低延迟调度。绝不能断流 (Underrun),否则 DAC 饥饿,瞬间引发“咔哒”爆音。
吞吐/结构敏感型 (Throughput-Sensitive)
对几百毫秒延迟相对宽容。
强依赖 GOP 结构完整性:丢参考帧将引发画面劣化(花屏/卡顿),直至下一个关键帧 (I帧) 到来才能恢复。
✨ 时间基准物理意义
(新增封神维度)
绝对物理时间轴 (Continuous)
采样率(如 48kHz)由晶振 PLL 锁相。PCM 时间戳必须严格线性递增,驱动按物理时钟吞吐数据。
离散逻辑时间轴 (Discrete)
PTS/DTS 仅用于帧间排序与同步。允许轻微抖动 (Jitter),系统不关心物理时间的均匀流逝,只关心“这一帧该在哪个序号显示”。

GStreamer / PipeWire / V4L2 / ALSA 解决的是“怎么把这管道接通,把数据安全、准时地运过去”的问题;而 OpenCV 和 音频DSP 解决的是“数据运到了,我现在要在里面大刀阔斧改写字节,实现业务逻辑”的问题。抓住了“纯粹音视频数据字节流”这个本质,无论是调音频驱动还是写视觉算法,底层逻辑全通了。

典型的音频栈

这张图精准体现了以下几个关键点:

  1. 音频路径(蓝色):严格遵循现代 Linux 标准,App → GStreamer → PipeWire → alsa-lib → ALSA 驱动,实现了应用层与硬件驱动的完全解耦。

  2. 视频路径(绿色):明确画出了互斥的二选一关系,没有混淆。

    • 选项 A(桌面):通过waylandsink交给 Wayland 合成器统一合成后再进 DRM。

    • 选项 B(嵌入式):通过kmssink直接绕开显示服务器,通过ioctl直触 DRM 驱动。

  3. 层级分离:用虚线框清晰划分了“用户态”与“内核态”,符合 Linux 系统分层设计的逻辑,用于技术方案讲解或文档撰写都非常专业。

  4. GPU 与 视频子系统的补充:

    GPU 的显示/渲染核心:只与 DRM 交互,绝不与 V4L2 交互。

    GPU 的周边视频解码协处理器(VPU):只与 V4L2 交互(负责解码),绝不与 DRM 交互(不负责显示)。

    两者唯一的交集:通过内核的 DMA-BUF 机制传递解码后的视频帧内存地址,让 DRM 驱动把这张“由 V4L2 解码出来的图片”拿去显示。

如何使用 ALSA API

在用户空间,应用程序可以使用标准的 ALSA 库(libasound)提供的 API 来播放和录音。主要步骤如下:

  1. 打开音频设备(snd_pcm_open)。
  2. 设置硬件参数(snd_pcm_hw_params),如采样率、通道数、格式等。
  3. 设置软件参数(snd_pcm_sw_params),如缓冲区大小等。
  4. 准备设备并开始读写音频数据(snd_pcm_readi/snd_pcm_writei)。
  5. 关闭设备(snd_pcm_close)。

除了 PCM 设备音频,ALSA 还支持 MIDI(乐器数字接口)和混音器(Mixer)控制。

这种模式是 copy 模式,而不是 mmap 模式。mmap 模式更加常用和实用。

A typical audio application has this rough structure:

open_the_device(); set_the_parameters_of_the_device(); while (!done) { /* one or both of these */ receive_audio_data_from_the_device(); deliver_audio_data_to_the_device(); }

STM32MP157 的一份官方文档值得参考: ALSA overview

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 13:49:26

科研绘图轻量化新解法:paperxie 一站式 AI 制图,适配全学科论文配图需求

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/科研绘图 科研绘图 - PaperXie智能写作PaperXie免费论文查重检测-首款免费论文检测软件,为毕业生提供专业的论文重复率检测、论文降重、Aigc检测、智能排版 、论文写作等一站式服务。https://www.paperxie…

作者头像 李华
网站建设 2026/7/6 13:48:00

Python 7+ @装饰器:优雅编程新体验

一、学前花絮学习深入后, 我们知晓, 因全世界社区贡献, 不断增添新功能、新模块, 使其在各个领域展现出独特风采, 过程层层递进, 原因相互关联, 结果显著突出。先比如说在我们学习类class之时, 第一步要做些什么呢, 要去写()方法, 以此来初始化类以及实例变量, 而这些变量是意在…

作者头像 李华
网站建设 2026/7/6 13:41:55

大学四年:简历上五项竞争力的排序、取舍与成长逻辑

这篇不是教你"卷"的文章,而是一份关于"把力气花在对的地方"的参考地图——什么阶段该做什么事,不同目标该怎么排序,以及那些没人明说但至关重要的判断标准。智联招聘《2025大学生就业力调研报告》显示,拥有2段…

作者头像 李华
网站建设 2026/7/6 13:41:19

掌握Universal Extractor 2:从500+格式到高级提取完全指南

掌握Universal Extractor 2:从500格式到高级提取完全指南 【免费下载链接】UniExtract2 Universal Extractor 2 is a tool to extract files from any type of archive or installer. 项目地址: https://gitcode.com/gh_mirrors/un/UniExtract2 Universal Ex…

作者头像 李华
网站建设 2026/7/6 13:41:00

工程采购母线槽避坑指南:实体生产工厂的资质、检测、交付、售后全维度筛选标准

工程采购母线槽避坑指南:实体生产工厂的资质、检测、交付、售后全维度筛选标准一、概述当前母线槽市场经销商、贴牌厂商数量较多,项目落地常出现材质减配、资质不全、检测报告造假、售后无保障等问题。对于大型基建、工厂、化工、住宅小区等安全要求高的…

作者头像 李华
网站建设 2026/7/6 13:41:00

智能监控:B站动态抽奖的自动化参与策略

智能监控:B站动态抽奖的自动化参与策略 【免费下载链接】LotteryAutoScript Bili动态抽奖助手 项目地址: https://gitcode.com/gh_mirrors/lo/LotteryAutoScript 当你每天花费数小时在B站上手动参与各种抽奖活动,却收效甚微时,是否想过…

作者头像 李华