Skip to content

约 2 分钟阅读

嵌入式音视频 ​

摄像头把光变成帧,麦克风把空气振动变成 PCM;应用要把这些数据交给编码器、封装器、网络和显示设备。任何一层的格式或时间戳不一致,最后都可能表现为“黑屏”“没声音”“延迟很大”或“文件能下载却不能播放”。

这个专题把一条媒体链路拆成可定位的对象:原始采样、压缩码流、容器、传输协议和播放端。它承接采集与播放链路,但会继续进入视频帧、FFmpeg、GStreamer、V4L2、直播协议和 RK3588 这类嵌入式 Linux 运行环境;音频算法和语音识别仍放在声学与语音专题。

嵌入式音视频从采集到播放的媒体处理链

图中的每个箭头都代表一次可能的格式转换或排队。排查时先确认数据仍然存在,再确认它的时间基、编码和承载方式,最后才调整码率或播放器缓存。

阅读路径 ​

页面解决的问题适合什么时候读
01. 媒体链路与时间戳容器、编码、解码、PTS/DTS、转封装和转码怎样连接文件打不开、音画不同步、判断问题在哪一层
02. 音视频参数与内存格式分辨率、帧率、码率、NV12、PCM 和 Buffer 怎样换算配置摄像头、ALSA/V4L2 设备或估算带宽
03. 编码、容器与在线格式H.264/H.265、AAC、MP4、FLV、HLS 各负责什么选择存档格式、播放器兼容性或压缩参数
04. 直播链路与协议推流、源站、CDN、拉流和低延迟协议如何协作设计监控、直播或局域网实时预览
05. FFmpeg 与 GStreamer 实战用命令行验证媒体,再落到嵌入式 Pipeline需要复现格式、转封装、转码或接入硬件编解码

先固定三个边界 ​

媒体对象边界。 NV12、PCM 是原始内存格式;H.264、H.265、AAC 是压缩码流;MP4、MKV、FLV 是容器;RTSP、RTMP、HLS、WebRTC 是会话或交付方式。它们可以组合,但不能互换名称。

时间边界。 摄像头曝光、编码队列、网络缓冲、解码队列和显示刷新都会增加延迟。只看播放器的“缓冲秒数”不能得到端到端延迟,必须在采集端和显示端使用同一时钟或可关联的时间戳测量。

硬件边界。 “安装了 FFmpeg”不代表会调用板载 VPU;“使用 H.265”也不代表自动零拷贝。硬件插件、驱动、颜色转换和内存搬运都要在目标板上单独确认。嵌入式 Linux 的启动、设备树和驱动入口见嵌入式 Linux。

从媒体链路开始阅读,再按实际任务进入协议或命令页,可以避免把容器问题误判成网络问题,把音频采样率问题误判成编码器问题。

别急,先让缓存热一下。