演示效果

香橙派rk3588在ubuntu桌面系统编程rtsp拉流mpp解码rga转格式opengles渲染x11窗口的视频播放器

1080p@30 码率2721kbps

注意 这是远程桌面 会比实际接屏幕效果差一些

 

性能

cpu 14.6%

gpu 20%

rga 2%

 

实现方案

ffmpeg拉流rtsp获得h264 为了传输稳定配置rtsp over tcp

mpp解码h264获得nv12 注意解码器会有帧长度对齐

rga转换nv12成rgb 将解码帧裁剪掉对齐的多余部分

opengles对接X11渲染rgb 使用pbo双缓冲提高内存加载到GPU的效率

为了减少图像帧拷贝 图像格式转换和渲染串行处理

不用pbo双缓冲时 图像格式转换+渲染100帧耗1386ms 平均13.86ms

使用pbo双缓冲时 图像格式转换+渲染100帧耗 845ms 平均8.45ms

在1080p@30下pbo双缓冲提升的效率约是39.03%

不同的gpu内存加载方式会影响图像格式转换耗时

不用pbo双缓冲时 图像格式转换100帧耗时132ms

使用pbo双缓冲时 图像格式转换100帧耗时484ms

为什么不同的方式会影响图像格式转换耗时?因为输出的内存不同 使用pbo双缓冲时 图像格式转换输出的内存是经过映射的 是从cpu用的内存映射到gpu的内存上 而不用pbo双缓冲时的 图像格式转换的输出内存不是映射gpu的内存 所以耗时不同

环境

主控 rk3588

板卡 香橙派5 ultra

系统 ubuntu桌面

 

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐