[具身智能-645]:RDK X5 rtsp2display 演示的功能、目标和代码执行流程
第一部分RDK X5 运行 decode2display 演示程序完整步骤环境RDK X5 Ubuntu 系统官方 hobot-multimedia 多媒体 SDK 示例1. 前置条件1开发板系统镜像已预装hobot-multimedia多媒体库 2准备码流文件.h264 / .h265裸流文件建议码流内置 SPS/PPS防止花屏 3HDMI 显示器接 RDK X5确认显示输出正常 4安装编译依赖bash运行sudo apt update sudo apt install cmake gcc g2. 获取源码官方多媒体示例默认路径plaintext/opt/tros/share/hobot-multimedia/sample/示例目录sample_decode2display3. 编译示例bash运行cd /opt/tros/share/hobot-multimedia/sample/sample_decode2display mkdir build cd build cmake .. make -j4编译生成可执行文件sample_decode2display4. 启动程序bash运行# 播放h265裸流 ./sample_decode2display -i test.h265 -t 1 # 参数说明 # -i 输入码流文件路径 # -t 码流类型0:H264 1:H2655. 常见故障黑屏先启动显示后启动解码器检查分辨率是否超出 VO 硬件支持范围花屏裸流缺少 SPS/PPS建议使用 mp4 提取带参数集的码流权限报错加上sudo运行画面卡顿调大解码器缓存队列深度。第二部分RDK X5 rtsp2display 演示RTSP 流 → 硬解码 → HDMI 直显一、rtsp2display Demo 功能rtsp2display 基于 hobot-multimedia ffmpeg/RTSP 拉流组件在 decode2display 基础上把本地文件读取替换为网络 RTSP 实时拉流。RTSP 客户端拉流从 IPC、视频服务器接收 RTSP 网络 H264/H265 码流VPU 硬件解码接收网络 NAL 码流送入硬件解码器输出 NV12硬件零拷贝链路Decoder →VO Display直接 HDMI 输出全程图像数据硬件流转CPU仅负责网络接收、码流切片、模块调度通信与调度支持实时监控预览可扩展 splitter 分流一路预览、一路送入 BPU 做 AI 检测。和 decode2display 核心差异 decode2display数据源 本地码流文件 rtsp2display数据源 网络 RTSP 实时流二、Demo 设计目标验证网络实时视频流 硬件多媒体流水线整套通路适配机器人外接网络摄像头场景验证实时流时序控制、网络抖动下缓冲区策略保证画面流畅提供网络摄像头实时预览标准工程模板实现低 CPU 占用不抢占 ROS2、运动控制算力资源。三、完整代码执行流程阶段 1全局初始化hobot_mm_init()初始化多媒体框架管理硬件连续物理内存解析入参RTSP 地址、编码类型 (H264/H265)、显示窗口参数初始化 RTSP 客户端建立网络套接字配置接收缓冲区用于对抗网络抖动。阶段 2创建多媒体模块实例和 decode2display 一致创建 Decoder 解码器实例输出格式 NV12创建 Display 显示实例绑定 HDMI 输出阶段 3模块绑定plaintextDecoder → Display hobot_mm_bind(decoder_out_port, display_in_port)如需 AI 推理拓展Decoder → Splitter一路 Display一路 DNN (BPU)。阶段 4启动链路固定顺序hobot_mm_start_display()先启动显示hobot_mm_start_decoder()启动解码器等待码流输入。阶段 5主线程【核心循环RTSP 拉流 送码流至解码器】plaintextwhile(程序未收到退出信号) { 1. RTSP客户端持续接收网络RTP数据包 2. 组包、拼接成完整H264/H265 NAL单元 3. 调用 decoder_input() 将NAL码流送入硬件VPU解码器 4. VPU硬件解码生成NV12图像帧 5. NV12帧通过共享buffer自动流转到VO 6. VO硬件缩放、色域转换HDMI输出画面 }重点区别 decode2display 从磁盘文件读 NAL rtsp2display 从网络 socket 接收、组装 NAL。阶段 6退出触发CtrlC / 网络断开停止 RTSP 拉流关闭网络连接发送解码结束指令排空解码器缓存帧hobot_mm_stop_decoder()→hobot_mm_stop_display()阶段 7逆序释放所有资源unbind 模块连接销毁 decoder、display 实例hobot_mm_deinit()释放硬件内存关闭 RTSP 客户端。四、工程关键难点落地重点网络抖动处理网络流存在时延波动必须设置解码器内部缓冲队列队列过长增加延迟队列太短容易丢帧。NAL 重组RTSP RTP 分片传输一段图像 NAL 会被拆成多个网络包代码必须完成分片重组不能直接送入解码器否则解码花屏。SPS/PPS 周期下发网络长时间断开重连后解码器丢失参数集需要定时向解码器重新送入 SPS/PPS。时钟同步实时预览场景需要丢弃过时帧防止画面累积延迟持续走高。五、总结rtsp2display 在 decode2display 硬件直显架构基础上将数据源由本地码流文件替换为网络 RTSP 视频流。程序先初始化多媒体框架创建解码器与显示模块并完成绑定先启动显示再启动解码器。主线程持续从网络拉取 RTSP 码流完成数据包重组后送入硬件 VPU 解码生成 NV12 图像直接通过硬件通道输出至 HDMI 显示器。程序退出后逆序停止模块并释放硬件资源。该示例验证网络摄像头实时预览硬件流水线适合机器人外接网络相机监控场景。