3.3.11 rtsp 推流解码示例介绍
示例简介
RTSP 流解码示例是一个位于 /app/pydev_demo/08_decode_rtsp_stream/ 中的 Python 接口 开发代码示例,用于演示如何从 RTSP 视频流获取 H.264/H.265 码流,通过硬件解码、视频处理和 AI 推理,实现实时视频解码和目标检测功能。该示例展示了完整的视频处理流水线,包括 RTSP 流接收、硬件解码、视频处理、 AI 推理和结果显示。
效果展示

硬件准备
硬件连接
- 准备一个 RDK 开发板
- 通过 HDMI 线连接显示器和开发板
- 连接网线到开发板
- 连接电源线

快速开始
代码以及板端位置
进入到 /app/pydev_demo/08_decode_rtsp_stream/ 位置,可以看到 RTSP 流解码示例包含以下文件:
root@ubuntu:/app/pydev_demo/08_decode_rtsp_stream# tree
.
├── 1080P_test.h264
├── decode_rtsp_stream.py
└── live555MediaServer
编译以及运行
我们先做好准备工作,如果要通过 HDMI 显示,通过 systemctl stop lightdm 命令关闭图形界面服务达到最佳显示效果。
示例里面默认有 1080P_test.h264 文件,如果想要尝试 h265 格式的文件,可以从板端其他地方拷贝过来,比如 /opt/tros/humble/lib/hobot_codec/config/1920x1080.h265 目录下的文件。
首先需要启动 RTSP 流媒体服务器,然后运行 Python 脚本:
执行效果
# 关闭图形界面服务达到最佳显示效果
systemctl stop lightdm
# 启动 RTSP 流媒体服务器
./live555MediaServer &
# 运行 RTSP 流解码示例(h264)
python3 decode_rtsp_stream.py -u rtsp://127.0.0.1/1080P_test.h264 -d 1 -a 1
运行后,程序会连接 RTSP 流媒体服务器,解码视频流并进行目标检测,结果会通过 HDMI 显示:
root@ubuntu:/app/pydev_demo/08_decode_rtsp_stream#./live555MediaServer &
version 1.01 (LIVE555 Streaming Media library version 2020.07.09).
Play streams from this server using the URL
rtsp://192.168.127.10/<filename>
where <filename> is a file present in the current directory.
Each file's type is inferred from its name suffix:
".264" => a H.264 Video Elementary Stream file
".265" => a H.265 Video Elementary Stream file
".aac" => an AAC Audio (ADTS format) file
".ac3" => an AC-3 Audio file
".amr" => an AMR Audio file
".dv" => a DV Video file
".m4e" => a MPEG-4 Video Elementary Stream file
".mkv" => a Matroska audio+video+(optional)subtitles file
".mp3" => a MPEG-1 or 2 Audio file
".mpg" => a MPEG-1 or 2 Program Stream (audio+video) file
".ogg" or ".ogv" or ".opus" => an Ogg audio and/or video file
".ts" => a MPEG Transport Stream file
(a ".tsx" index file - if present - provides server 'trick play' support)
".vob" => a VOB (MPEG-2 video with AC-3 audio) file
".wav" => a WAV Audio file
".webm" => a WebM audio(Vorbis)+video(VP8) file
See http://www.live555.com/mediaServer/ for additional documentation.
(We use port 80 for optional RTSP-over-HTTP tunneling, or for HTTP live streaming (for indexed Transport Stream files only).)
root@ubuntu:/app/pydev_demo/08_decode_rtsp_stream# ./decode_rtsp_stream.py
['rtsp://127.0.0.1/1080P_test.h264']
Encoding detected via FourCC: h264, dec_type: 1
RTSP stream frame_width:1920, frame_height:1080
Decoder(0, 1) return:0 frame count: 0
Opened DRM device: /dev/dri/card0
.............
.............
.............