Toybrick

RK3399Pro入门教程(7)RTSP库的使用

hisping

管理员

积分
595
发表于 2019-8-19 15:45:27    查看: 3337|回复: 32 | [复制链接]    打印 | 显示全部楼层



RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。目前越来越多的场所如商场,连锁店,教育,交通,银行,政府,工业使用到网络摄像头,而大多网络摄像头均采用RTSP协议传输多媒体数据,TB-rk3399proD强大的硬解码配合librockchip_rtsp库可以非常简单高效的解码rtsp多媒体数据,TB-rk3399proD中强大的NPU配合rknn-toolkit可以对解码的多媒体数据进行物体检测,提取有价值的信息,使网络摄像头更加智能!
TB-rk3399proD中VPU模块支持4K VP9 and 4K 10bits H265/H264 视频解码,高达60fps;1080P 多格式视频解码 (WMV, MPEG-1/2/4, VP8),支持6路1080P@30fps解码;1080P 视频编码,支持H.264,VP8格式,支持2路1080P@30fps编码;用户只需要安装rockchip_mpp rockchip_rtsp库就可以获取rtsp视频流并调用硬件VPU自动解码,非常简单高效。

本教程基于TB-RK3399proD开发板,采用fedora28系统(固件v1.2测试通过),网络摄像头采用大华IPC-HFW8431D-Z型号进行测试

1.环境安装,细节参考wiki环境安装教程
  1. sudo dnf install -y cmake gcc gcc-c++ protobuf-devel protobuf-compiler lapack-devel opencv-devel
  2. sudo dnf install -y python3-devel python3-opencv python3-numpy-f2py python3-h5py python3-lmdb  python3-grpcio
复制代码


2.安装相关系统软件包,细节参考wiki系统软件包安装
  1. sudo dnf install librockchip_mpp-devel
  2. sudo dnf install librockchip_rga-devel
  3. sudo dnf install librockchip_rtsp-devel curl-devel
复制代码
3.下载并解压附件
4.修改rtsp_ssd.cpp文件中RTSP_URL  RTSP_USER  RTSP_PWD宏,指向用户自己的网络摄像头地址
5.编译执行
  1. cd local_rtsp/build
  2. cmake ..
  3. make
  4. ./rtsp_ssd
复制代码

可以正常获取网络摄像头图像数据并显示,效果如下:




代码分析
  1. RtspClient rtsp_client(RTSP_URL, RTSP_USER, RTSP_PWD);
  2. //设置回调函数,每接收一帧数据调用一次该函数
  3. rtsp_client.setDataCallback(onRtspHandle);
复制代码
  1. void onRtspHandle(unsigned char *buf, size_t len)
  2. {
  3.         std::cout << "frame recived " << len << std::endl;
  4. //调用mpp库将接收到的数据入队
  5.         mpp_dec->ops->enqueue(mpp_dec, buf, len);
  6. }
复制代码
  1. //将之前的入队数据进行硬件解码,得到解码数据
  2. DecFrame *frame = mpp_dec->ops->dequeue_timeout(mpp_dec, 300);
复制代码
  1. //调用rga对图片进行resize操作,并转换图片为rgb格式
  2. rga->ops->initCtx(rga);
  3.         rga->ops->setRotate(rga, RGA_ROTATE_NONE);
  4.         rga->ops->setSrcFormat(rga, V4L2_PIX_FMT_NV12, width, height);
  5.         rga->ops->setDstFormat(rga, V4L2_PIX_FMT_RGB24, resize_w, resize_h);
复制代码












本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

yaowei

中级会员

积分
355
发表于 2019-8-23 13:33:01 | 显示全部楼层
really?这么简单的吗
回复

使用道具 举报

zhouzhouzlove

中级会员

积分
243
发表于 2019-8-23 14:03:37 | 显示全部楼层
这个是使用已经编译好的固件,各项功能都齐全了,但是如果是自己制作的ubuntu文件系统呢?应该怎么部署开发环境?
如:
1、mpp库的配置选项,
2、rtsp库如何配置安装


这种是否有教程?
授人以鱼不如授人以渔。
回复

使用道具 举报

yaowei

中级会员

积分
355
发表于 2019-8-27 16:55:55 | 显示全部楼层
本帖最后由 yaowei 于 2019-8-28 18:25 编辑

为什么报错没有dequeue_timeout这个函数呢?(fedora 28,固件1.3)

error: ‘DecOps’ {aka ‘struct _DecOps’} has no member named ‘dequeue_timeout’

这是在哪个头文件里面的?没有include对吗?

PS:
sudo dnf clean/ sudo dnf update后编译过了,但是读不到摄像头,显示错误为decode_get_frame failed, 返回错误值-8。

PPS:
已经可以运行了。
回复

使用道具 举报

15992605143

注册会员

积分
102
发表于 2019-9-3 01:10:34 | 显示全部楼层
请问rockchip_mpp  rockchip_rtsp的源码下载链接在哪里?怎样编译安装?
回复

使用道具 举报

yaowei

中级会员

积分
355
发表于 2019-9-3 15:44:42 | 显示全部楼层
15992605143 发表于 2019-9-3 01:10
请问rockchip_mpp  rockchip_rtsp的源码下载链接在哪里?怎样编译安装?

sudo dnf install librockchip_mpp-devel librockchip_rtsp-devel
回复

使用道具 举报

15992605143

注册会员

积分
102
发表于 2019-9-3 20:36:11 | 显示全部楼层
rockchip_rtsp开源了吗?在github上找不到这个包。
回复

使用道具 举报

hisping

管理员

积分
595
 楼主| 发表于 2019-9-4 08:25:21 | 显示全部楼层
15992605143 发表于 2019-9-3 20:36
rockchip_rtsp开源了吗?在github上找不到这个包。

开源了mpp rga isp,没有开源rtsp
回复

使用道具 举报

RK用户

注册会员

积分
109
发表于 2019-9-5 09:08:17 | 显示全部楼层
新买的3399ProD的板子,MPP库无法使用,一直返回错误,官方编译的也不能用,RK3288上MPP库正常使用,这个例子也不正常

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

hisping

管理员

积分
595
 楼主| 发表于 2019-9-6 08:31:33 | 显示全部楼层
RK用户 发表于 2019-9-5 09:08
新买的3399ProD的板子,MPP库无法使用,一直返回错误,官方编译的也不能用,RK3288上MPP库正常使用,这个例 ...

你这是没有接收到数据,检查下rtsp路径及用户名密码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表