ESP-Extractor 组件

[English]

在多媒体产品中,音频和视频通常会保存在 MP4、TS、FLV、WAV、OGG、AVI 或 CAF 等容器文件中。这些文件便于存储和分享,但设备在播放、分析或复用其中内容之前,需要先把容器拆分回音频帧和视频帧。

ESP-Extractor 是一个用于读取媒体文件并提取其中音频、视频和元数据的 ESP-IDF 组件。借助它,乐鑫设备无需从零实现容器解析,就可以构建本地播放、媒体预览、AI 分析和格式转换等功能。

什么是 ESP-Extractor

ESP-Extractor 是多媒体流水线中的“解包”部分。如果 ESP-Muxer 组件 负责将编码后的音频和视频打包成可播放文件,那么 ESP-Extractor 做的就是相反的工作:打开已有文件或流,识别容器格式,并输出下一个模块可使用的帧。

对于用户和产品开发者来说,这意味着设备可以:

  • 播放存储在 SD 卡或 Flash 中的本地媒体文件。

  • 在设备端预览录制片段。

  • 为 AI 处理提取视频帧或音频片段。

  • 将已有内容重新封装到另一种容器中。

  • 从自定义存储或带缓存的网络数据源中读取媒体。

为什么需要它

如果没有提取器,每个产品都必须自行处理容器格式:查找轨道、读取时间戳、分离音频和视频,并保持播放顺序。尤其是在产品需要支持多种文件格式时,这项工作的复杂度很容易被低估。

ESP-Extractor 提供了可复用的提取层,让应用可以专注于用户体验:打开文件、开始播放、显示缩略图、运行 AI 分析,或将媒体发送给其他模块。

典型使用场景

本地媒体播放

设备可以从 SD 卡或 Flash 中读取媒体文件,提取音频帧和视频帧,并发送给解码器,最终通过扬声器和显示屏输出。这适用于智能屏、玩具、教育设备、带本地媒体的语音产品,以及带回放功能的摄像头产品。

录制片段预览

智能摄像头、门铃和记录仪通常需要在设备端回放已捕获的视频片段,或快速生成预览。ESP-Extractor 可以将存储文件分离为可解码或可检查的媒体流。

AI 媒体处理

对于 AI 摄像头或检测设备,录制文件可能需要在捕获后再进行分析。ESP-Extractor 可以提供 AI 流水线用于检测、分类或事件复查的视频帧或音频帧。

格式转换和重新封装

有时产品需要将一种媒体格式转换为另一种格式,例如把录制片段转换为更适合流式传输的格式。ESP-Extractor 可以读取原始容器,并将编码后的帧传递给 ESP-Muxer,用于创建新的文件或媒体流。

类流式输入

有些产品并不是从普通文件中读取媒体。内容可能来自 Flash 分区、RAM 缓冲区或网络缓存。在这类设计中可以使用 ESP-Extractor,从而保持媒体流水线的一致性。

简单架构

ESP-Extractor 位于媒体源和消费音频或视频帧的模块之间:

ESP-Extractor 媒体流水线

ESP-Extractor 不会替代音频或视频解码器。它负责为解码器、AI 模块、播放模块或 ESP-Muxer 准备媒体流。

支持的媒体类型

ESP-Extractor 支持常见的嵌入式多媒体容器和编解码格式,包括 MP4、TS、FLV、WAV、OGG、AVI、CAF、AAC、MP3、H.264、MJPEG、PCM、OPUS、FLAC 等;具体支持情况取决于容器格式。

如需了解准确的支持矩阵和集成细节,请参考模块文档。

后续阅读

  • 请参阅 ESP-Extractor README,了解详细的媒体支持情况和集成指南。

  • 如果需要将提取出的音频帧和视频帧打包到新的容器中,请参阅 ESP-Muxer 组件