- sudo dnf install -y cmake gcc gcc-c++ protobuf-devel protobuf-compiler lapack-devel opencv-devel
- sudo dnf install -y python3-devel python3-opencv python3-numpy-f2py python3-h5py python3-lmdb python3-grpcio
复制代码
- sudo dnf install librockchip_mpp-devel
- sudo dnf install librockchip_rga-devel
- sudo dnf install librockchip_rtsp-devel curl-devel
复制代码
3.下载并解压附件[attach]482[/attach]- cd local_rtsp/build
- cmake ..
- make
- ./rtsp_ssd
复制代码
- RtspClient rtsp_client(RTSP_URL, RTSP_USER, RTSP_PWD);
- //设置回调函数,每接收一帧数据调用一次该函数
- rtsp_client.setDataCallback(onRtspHandle);
复制代码
- void onRtspHandle(unsigned char *buf, size_t len)
- {
- std::cout << "frame recived " << len << std::endl;
- //调用mpp库将接收到的数据入队
- mpp_dec->ops->enqueue(mpp_dec, buf, len);
- }
复制代码
- //将之前的入队数据进行硬件解码,得到解码数据
- DecFrame *frame = mpp_dec->ops->dequeue_timeout(mpp_dec, 300);
复制代码
- //调用rga对图片进行resize操作,并转换图片为rgb格式
- rga->ops->initCtx(rga);
- rga->ops->setRotate(rga, RGA_ROTATE_NONE);
- rga->ops->setSrcFormat(rga, V4L2_PIX_FMT_NV12, width, height);
- rga->ops->setDstFormat(rga, V4L2_PIX_FMT_RGB24, resize_w, resize_h);
复制代码
15992605143 发表于 2019-9-3 01:10
请问rockchip_mpp rockchip_rtsp的源码下载链接在哪里?怎样编译安装?
15992605143 发表于 2019-9-3 20:36
rockchip_rtsp开源了吗?在github上找不到这个包。
RK用户 发表于 2019-9-5 09:08
新买的3399ProD的板子,MPP库无法使用,一直返回错误,官方编译的也不能用,RK3288上MPP库正常使用,这个例 ...
yaowei 发表于 2019-8-27 16:55
为什么报错没有dequeue_timeout这个函数呢?(fedora 28,固件1.3)
error: ‘DecOps’ {aka ‘struct _De ...
yaowei 发表于 2019-8-27 16:55
为什么报错没有dequeue_timeout这个函数呢?(fedora 28,固件1.3)
error: ‘DecOps’ {aka ‘struct _De ...
zhy163 发表于 2019-9-23 17:35
请问一下,decode_get_frame failed这个错误最终怎么解决的?
hisping 发表于 2019-9-24 08:42
这个一般是rtsp源有问题,确认下源路径,用户名,密码是否正确
yuys 发表于 2019-9-24 15:54
这个大华、海康的相机没法使用啊。版主用的啥相机做的示例?
zerollzeng 发表于 2019-9-26 16:32
跑例子的时候失败了,请问一下是什么原因?刚拿到板子还不熟悉
[toybrick@localhost build]$ ./rtsp_ssd
mpi ...
hisping 发表于 2019-9-27 08:48
已近按照教程安装了mpp库?修改了rtsp地址为你自己的网络摄像头了吗?
zerollzeng 发表于 2019-9-29 17:16
如果这个不能用的话用ffmpeg有没有性能上的影响?
hisping 发表于 2019-9-30 09:15
你有试过使用vlc能播放你的rtsp流吗?
hisping 发表于 2019-9-4 08:25
开源了mpp rga isp,没有开源rtsp
cr7jj 发表于 2019-11-12 22:26
用这个代码 播放不了 VLC的RTSP流,请问怎么解决
zerollzeng 发表于 2019-10-8 10:08
谢谢可以了,用vlc也不能打开,后来发现是路由问题,后来人引以为鉴哈哈
zouxf 发表于 2019-11-20 09:25
这里用到的Mpp库有开源吗? github rockhip-linux中开源的mpp库, 没有提供MppDecoderCreate的api, 也没有 ...
someone9388 发表于 2019-12-13 16:23
按照步骤完成,运行得到如下错误:
Open file(/boot/toybrick-release) failed
MppDecoderCreate error!
liyang 发表于 2020-3-22 22:56
同样请教 unbuntu中如何拿到rtsp流
lipandeng 发表于 2020-1-15 17:38
硬解码后的图像颜色偏差很大,尤其和软解码对比更明显,不知道啥原因还有就是硬解码下cpu使用率还是有些高 ...
christian 发表于 2020-4-10 16:32
你好,颜色偏差大有解决吗?
- #include <stdio.h>
- #include <unistd.h>
- #include <iostream>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <thread>
- #include <memory.h>
- #include <sys/time.h>
- #include <queue>
- using namespace std;
- #include "opencv2/core/core.hpp"
- #include "opencv2/highgui/highgui.hpp"
- #include <rockchip/rockchip_rtsp.h>
- #include <rockchip/rockchip_mpp.h>
- extern "C" {
- #include <rockchip/rockchip_rga.h>
- }
- #define RTSP_URL "rtsp://192.168.1.200/h264/ch1/main/av_stream"
- #define RTSP_USER "admin"
- #define RTSP_PWD "123456"
- static MppDecoder *mpp_dec = NULL;
- static std::queue<DecFrame *> frame_queue;
- static int run_flag = 0;
- unsigned long get_time(void)
- {
- struct timeval ts;
- gettimeofday(&ts, NULL);
- return (ts.tv_sec * 1000 + ts.tv_usec / 1000);
- }
- void onRtspHandle(unsigned char *buf, size_t len)
- {
- std::cout << "frame recived " << len << std::endl;
- mpp_dec->ops->enqueue(mpp_dec, buf, len);
- }
- void inference_thread(RockchipRga *rga, int width, int height)
- {
- int ret;
- int resize_w = 1920, resize_h = 1080;
- static int frame_size = 0;
- unsigned char *frame_rgb = NULL;
- rga->ops->initCtx(rga);
- rga->ops->setRotate(rga, RGA_ROTATE_NONE);
- rga->ops->setSrcFormat(rga, V4L2_PIX_FMT_NV12, width, height);
- rga->ops->setDstFormat(rga, V4L2_PIX_FMT_BGR24, resize_w, resize_h);
-
- frame_size = resize_w * resize_h * 3;
- frame_rgb = (unsigned char *)malloc(frame_size);
- cv::Mat img(resize_h , resize_w , CV_8UC3, frame_rgb);
- if (!frame_rgb)
- goto exit;
-
- rga->ops->setDstBufferPtr(rga, frame_rgb);
- while (run_flag) {
- if (frame_queue.empty()) {
- usleep(1000);
- continue;
- }
- auto frame = frame_queue.front();
- rga->ops->setSrcBufferPtr(rga, frame->data);
- ret = rga->ops->go(rga);
- printf("inference_thread ................\n");
- if (!ret) {
- ///do something with frame_rgb
- cv::imshow("test", img);
- cv::waitKey(10);
- }
- frame_queue.pop();
- mpp_dec->ops->freeFrame(frame);
- }
- exit:
- run_flag = 0;
- while (!frame_queue.empty()) {
- auto frame = frame_queue.front();
- mpp_dec->ops->freeFrame(frame);
- frame_queue.pop();
- }
- if (frame_rgb)
- free(frame_rgb);
- }
- void decode_thread(RockchipRga *rga)
- {
- int ret;
- int first_frame = 0;
- std::thread t_inference;
- while (run_flag) {
- DecFrame *frame = mpp_dec->ops->dequeue_timeout(mpp_dec, 300);
- if (frame != NULL) {
- std::cout << "decode frame" << frame->width << "x" << frame->height << std::endl;
-
- if (!first_frame) {
- std::cout << "first_frame" << std::endl;
- t_inference = std::thread(inference_thread, rga, frame->width, frame->height);
- first_frame = 1;
- }
- if (frame_queue.size() < 30)
- frame_queue.push(frame);
- else
- mpp_dec->ops->freeFrame(frame);
- }
- }
- exit:
- run_flag = 0;
- t_inference.join();
- while (!frame_queue.empty()) {
- auto frame = frame_queue.front();
- mpp_dec->ops->freeFrame(frame);
- frame_queue.pop();
- }
- }
- int main(int argc, char **argv)
- {
- int ret;
- RockchipRga *rga;
- unsigned char ready[5] = {'r', 'e', 'a', 'd', 'y'};
- RtspClient rtsp_client(RTSP_URL, RTSP_USER, RTSP_PWD);
- rtsp_client.setDataCallback(onRtspHandle);
- mpp_dec = MppDecoderCreate(DECODE_TYPE_H264);
- if (!mpp_dec) {
- std::cout << "MppDecoderCreate error!\n" << std::endl;
- return -1;
- }
- rga = RgaCreate();
- if (!rga) {
- MppDecoderDestroy(mpp_dec);
- std::cout << "rgaCreate error!\n" << std::endl;
- return -1;
- }
- run_flag = 1;
- rtsp_client.enable();
- std::thread t_decode(decode_thread, rga);
- while (run_flag) {
- usleep(10000);
- }
- rtsp_client.disable();
- run_flag = 0;
- t_decode.join();
- RgaDestroy(rga);
- MppDecoderDestroy(mpp_dec);
- return 0;
- }
复制代码
zerollzeng 发表于 2019-10-8 10:08
谢谢可以了,用vlc也不能打开,后来发现是路由问题,后来人引以为鉴哈哈
cr7jj 发表于 2020-3-10 17:01
[toybrick@toybrick build]$ ./rtsp_ssd
mpi: mpp version: Without VCS info
mpp_rt: NOT found ion allo ...
cr7jj 发表于 2019-11-13 17:19
我想问问,后来怎么解决
lipandeng 发表于 2020-4-29 12:26
解决了,系统是debian10 ,解决不了可以发邮寄给我:你参考下,
hellosong 发表于 2020-6-11 14:34
请问你Debian10的rtsp client的环境怎么配的,我在debian10 下编译找不到curl库
hellosong 发表于 2020-6-11 14:34
请问你Debian10的rtsp client的环境怎么配的,我在debian10 下编译找不到curl库
cr7jj 发表于 2019-11-13 14:25
用VLC推的RTSP流 用给出的代码运行会报错误mpp_log: decode_get_frame failed, return -8.,取不到流。如 ...
sunxiaolin9325 发表于 2020-9-7 19:06
补补补补补补补图
- mpp[26153]: mpp_info: mpp version: unknown mpp version for missing VCS info
- mpp[26153]: mpp_rt: NOT found ion allocator
- mpp[26153]: mpp_rt: found drm allocator
- [2020/10/15 08:28:54] D/: listening rtp port 45886
- [2020/10/15 08:28:54] D/: listening rtp port 45876
- [2020/10/15 08:28:54] D/: listening rtcp port 45877
- [2020/10/15 08:28:54] D/: listening rtcp port 45887
- [2020/10/15 08:28:54] D/: curlto rtsp://192.168.1.97:554/h264 , cli 45876:45886, tcp: 0
- [2020/10/15 08:28:54] D/: # FOUND[0] media: video
- [2020/10/15 08:28:54] D/: # FOUND[0] control: rtsp://192.168.1.97:554/h264/trackID=1
- [2020/10/15 08:28:54] D/: # FOUND[0] rtpmap: id:96 format:H264 bitrate:90000
- [2020/10/15 08:28:54] D/: # TOTAL FOUND 1
- [2020/10/15 08:28:54] D/: TRACK [0] : rtsp://192.168.1.97:554/h264/trackID=1
- [2020/10/15 08:28:54] D/: setup 45876 , 45877, uri: rtsp://192.168.1.97:554/h264/trackID=1
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
- mpp[26153]: mpp_log: decode_get_frame failed, return -8.
复制代码
lian 发表于 2020-10-15 14:50
在RK1808M0上运行sudo ./rtsp_ssd时报错:
用vlc可以打开流地址,如何解决问题
hisping 发表于 2019-9-4 08:25
开源了mpp rga isp,没有开源rtsp
闲花落地 发表于 2021-1-26 09:53
这个库支持用tcp的方式连接吗?
lian 发表于 2020-10-15 14:50
在RK1808M0上运行sudo ./rtsp_ssd时报错:
用vlc可以打开流地址,如何解决问题
lian 发表于 2020-10-15 14:50
在RK1808M0上运行sudo ./rtsp_ssd时报错:
用vlc可以打开流地址,如何解决问题
yuys 发表于 2020-10-29 18:39
用网桥模式。
loveltyoic 发表于 2021-5-10 18:16
你好,遇到了同样的错误。
我后来换了一个流,可以正常解码。我怀疑是有些流解不了码 ...
caizhoucun 发表于 2022-1-14 13:01
你好,你这个怎么解决的,我也遇到这个问题
- [2023/09/20 08:31:20] D/: listening rtp port 22540
- [2023/09/20 08:31:20] D/: listening rtcp port 22541
- [2023/09/20 08:31:20] D/: listening rtp port 22550
- [2023/09/20 08:31:20] D/: listening rtcp port 22551
- [2023/09/20 08:31:20] D/: curlto rtsp://192.168.0.239/test , cli 22540:22550, tcp: 0
- terminate called after throwing an instance of 'std::bad_alloc'
- what(): std::bad_alloc
- Aborted
复制代码
- sudo apt install rockchip-rtsp rockchip-rtsp-dev libcurl4-openssl-dev
复制代码
这个视频流可以用VLC播放器秒开,是1920*1080的H.264编码的视频流- 流 0
- 编解码器: H264 - MPEG-4 AVC (part 10) (h264)
- 类型: 视频
- 视频分辨率: 1920x1080
- 缓冲分辨率: 1920x1088
- 帧率: 25
- 已解码格式:
- 方向: 上左
- 色度位置: 左
- 流 1
- 编解码器: PCM ALAW (alaw)
- 类型: 音频
- 声道: 单声道
- 采样率: 8000 Hz
- 位每采样: 16
复制代码
欢迎光临 Toybrick (https://t.rock-chips.com/) | Powered by Discuz! X3.3 |