Toybrick

标题: RK3399Pro入门教程(7)RTSP库的使用 [打印本页]

作者: hisping    时间: 2019-8-19 15:45
标题: RK3399Pro入门教程(7)RTSP库的使用

[attach]501[/attach]


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.下载并解压附件[attach]482[/attach]
4.修改rtsp_ssd.cpp文件中RTSP_URL  RTSP_USER  RTSP_PWD宏,指向用户自己的网络摄像头地址
5.编译执行
  1. cd local_rtsp/build
  2. cmake ..
  3. make
  4. ./rtsp_ssd
复制代码

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

[attach]492[/attach]


代码分析
  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);
复制代码













作者: yaowei    时间: 2019-8-23 13:33
really?这么简单的吗
作者: zhouzhouzlove    时间: 2019-8-23 14:03
这个是使用已经编译好的固件,各项功能都齐全了,但是如果是自己制作的ubuntu文件系统呢?应该怎么部署开发环境?
如:
1、mpp库的配置选项,
2、rtsp库如何配置安装


这种是否有教程?
授人以鱼不如授人以渔。
作者: yaowei    时间: 2019-8-27 16: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    时间: 2019-9-3 01:10
请问rockchip_mpp  rockchip_rtsp的源码下载链接在哪里?怎样编译安装?
作者: yaowei    时间: 2019-9-3 15:44
15992605143 发表于 2019-9-3 01:10
请问rockchip_mpp  rockchip_rtsp的源码下载链接在哪里?怎样编译安装?

sudo dnf install librockchip_mpp-devel librockchip_rtsp-devel
作者: 15992605143    时间: 2019-9-3 20:36
rockchip_rtsp开源了吗?在github上找不到这个包。
作者: hisping    时间: 2019-9-4 08:25
15992605143 发表于 2019-9-3 20:36
rockchip_rtsp开源了吗?在github上找不到这个包。

开源了mpp rga isp,没有开源rtsp
作者: RK用户    时间: 2019-9-5 09:08
新买的3399ProD的板子,MPP库无法使用,一直返回错误,官方编译的也不能用,RK3288上MPP库正常使用,这个例子也不正常[attach]537[/attach]

作者: hisping    时间: 2019-9-6 08:31
RK用户 发表于 2019-9-5 09:08
新买的3399ProD的板子,MPP库无法使用,一直返回错误,官方编译的也不能用,RK3288上MPP库正常使用,这个例 ...

你这是没有接收到数据,检查下rtsp路径及用户名密码
作者: zhy163    时间: 2019-9-23 16:07
yaowei 发表于 2019-8-27 16:55
为什么报错没有dequeue_timeout这个函数呢?(fedora 28,固件1.3)

error: ‘DecOps’ {aka ‘struct _De ...

请问一下,decode_get_frame failed最后怎么解决的?
作者: zhy163    时间: 2019-9-23 17:35
yaowei 发表于 2019-8-27 16:55
为什么报错没有dequeue_timeout这个函数呢?(fedora 28,固件1.3)

error: ‘DecOps’ {aka ‘struct _De ...

请问一下,decode_get_frame failed这个错误最终怎么解决的?
作者: hisping    时间: 2019-9-24 08:42
zhy163 发表于 2019-9-23 17:35
请问一下,decode_get_frame failed这个错误最终怎么解决的?

这个一般是rtsp源有问题,确认下源路径,用户名,密码是否正确
作者: yuys    时间: 2019-9-24 15:54
hisping 发表于 2019-9-24 08:42
这个一般是rtsp源有问题,确认下源路径,用户名,密码是否正确

这个大华、海康的相机没法使用啊。版主用的啥相机做的示例?
作者: hisping    时间: 2019-9-26 08:54
yuys 发表于 2019-9-24 15:54
这个大华、海康的相机没法使用啊。版主用的啥相机做的示例?

文章有说啊,大华IPC-HFW8431D-Z型号
作者: zerollzeng    时间: 2019-9-26 16:32
跑例子的时候失败了,请问一下是什么原因?刚拿到板子还不熟悉
[toybrick@localhost build]$ ./rtsp_ssd
mpi: mpp version: Without VCS info
hal_h264d_api: Assertion vcodec_type & ((0x00000200) | (0x00000001) | (0x00000002)) failed at hal_h264d_init:104
hal_h264d_api: hal_h264d_init hard mode error, value=0
hal_h264d_api: Assertion 0 failed at hal_h264d_init:154
mpp_device: mpp_device_init failed to find device for coding 7 type 0
mpp_rt: NOT found ion allocator
mpp_rt: found drm allocator
Segmentation fault

gdb 看了一下在 mpp_dec = MppDecoderCreate(DECODE_TYPE_H264) 这里崩溃了
作者: hisping    时间: 2019-9-27 08:48
zerollzeng 发表于 2019-9-26 16:32
跑例子的时候失败了,请问一下是什么原因?刚拿到板子还不熟悉
[toybrick@localhost build]$ ./rtsp_ssd
mpi ...

已近按照教程安装了mpp库?修改了rtsp地址为你自己的网络摄像头了吗?
作者: zerollzeng    时间: 2019-9-27 09:03
hisping 发表于 2019-9-27 08:48
已近按照教程安装了mpp库?修改了rtsp地址为你自己的网络摄像头了吗?

嗯,都是按照教程来的
作者: zerollzeng    时间: 2019-9-29 17:15
更新了1.5的固件,没有报上面的错误了,但是还是取不到流是什么原因?
[toybrick@toybrick build]$ ./rtsp_ssd
mpi: mpp version: Without VCS info
mpp_rt: NOT found ion allocator
mpp_rt: found drm allocator
[2019/09/29 05:13:49] D/: listening rtcp port 31544
[2019/09/29 05:13:49] D/: listening rtp port 31553
[2019/09/29 05:13:49] D/: listening rtcp port 31554
[2019/09/29 05:13:49] D/: curlto rtsp://10.1.36.51/shcheck/pg/01.264 , cli 31543:31553, tcp: 0
[2019/09/29 05:13:49] D/: listening rtp port 31543
[2019/09/29 05:13:49] E/: (checkRet in curl_rtsp.cpp:313): [options:124] check error(7)! rtsp://10.1.36.51/shcheck/pg/01.264,
[2019/09/29 05:13:49] E/: (enable in unit_rtsp_client.cpp:279): rtsp client connect rtsp://10.1.36.51/shcheck/pg/01.264 failed.
[2019/09/29 05:13:49] D/: close curl rtsp://10.1.36.51/shcheck/pg/01.264
[2019/09/29 05:13:49] E/: (checkRet in curl_rtsp.cpp:313): [teardown:206] check error(7)! rtsp://10.1.36.51/shcheck/pg/01.264,
[2019/09/29 05:13:49] D/: destroying curl rtsp ...
[2019/09/29 05:13:49] D/: destroying curl rtsp ... done
mpp_log: decode_get_frame failed, return -8.
mpp_log: decode_get_frame failed, return -8.
mpp_log: decode_get_frame failed, return -8.

试了好几个摄像头都不行,直接取服务器的测试视频流也不行...是不是摄像头必须要在同一个网段?摄像头是大华的摄像头
作者: zerollzeng    时间: 2019-9-29 17:16
如果这个不能用的话用ffmpeg有没有性能上的影响?
作者: hisping    时间: 2019-9-30 09:15
zerollzeng 发表于 2019-9-29 17:16
如果这个不能用的话用ffmpeg有没有性能上的影响?

你有试过使用vlc能播放你的rtsp流吗?
作者: zerollzeng    时间: 2019-10-8 10:08
hisping 发表于 2019-9-30 09:15
你有试过使用vlc能播放你的rtsp流吗?

谢谢可以了,用vlc也不能打开,后来发现是路由问题,后来人引以为鉴哈哈
作者: 15992605143    时间: 2019-10-8 17:06
依赖库能不能发一下?另外1808的库文件有吗?能否上传一下,谢谢。
作者: zerollzeng    时间: 2019-10-9 15:51
问一个小问题, rtspclient的回调函数只有两个参数,所以enqueue到mpp队列的时候需要用到mpp_dec的全局变量,如果是多线程的情况下需要为每一个线程都创建一个MppDecoder,那么这个mpp_dec有什么比较好的方式来传递进去呢,如果还用全局变量就显得很麻烦,有相关的例子吗?
作者: will92    时间: 2019-10-12 15:53
RTSP库是否有ubuntu的版本呢
作者: yuys    时间: 2019-10-17 19:46
4.修改rtsp_ssd.cpp文件中RTSP_URL  RTSP_USER  RTSP_PWD宏,指向用户自己的网络摄像头地址,其中下面这种网络摄像头的地址不行:
"rtsp://admin:whatsfunning666@172.16.0.25/ffmepg/ch1/sub/av_stream"
无法正常的cmake ..
作者: yuys    时间: 2019-10-22 16:38
本示例,已运行成功,欢迎交流
作者: hjf515    时间: 2019-10-26 15:45
hisping 发表于 2019-9-4 08:25
开源了mpp rga isp,没有开源rtsp

请问mpp rga开源的地址在哪里?多谢!!
作者: cr7jj    时间: 2019-11-9 10:00
你好,我试过用你这个代码不能播放VLC流,怎么解决?
作者: cr7jj    时间: 2019-11-12 22:26
用这个代码 播放不了 VLC的RTSP流,请问怎么解决
作者: hisping    时间: 2019-11-13 08:59
cr7jj 发表于 2019-11-12 22:26
用这个代码 播放不了 VLC的RTSP流,请问怎么解决

1.直接在板子上安装vlc即可,这样最简单,但是没有使用到硬件  2.使用live555获取rtsp流,再使用mpp库去解码
作者: cr7jj    时间: 2019-11-13 14:25
用VLC推的RTSP流  用给出的代码运行会报错误mpp_log: decode_get_frame failed, return -8.,取不到流。如何解决
作者: cr7jj    时间: 2019-11-13 17:19
zerollzeng 发表于 2019-10-8 10:08
谢谢可以了,用vlc也不能打开,后来发现是路由问题,后来人引以为鉴哈哈

我想问问,后来怎么解决

作者: zouxf    时间: 2019-11-20 09:25
这里用到的Mpp库有开源吗? github rockhip-linux中开源的mpp库, 没有提供MppDecoderCreate的api, 也没有rockchip_mpp.h
https://github.com/rockchip-linux/mpp
作者: hisping    时间: 2019-11-20 09:36
zouxf 发表于 2019-11-20 09:25
这里用到的Mpp库有开源吗? github rockhip-linux中开源的mpp库, 没有提供MppDecoderCreate的api, 也没有 ...

为了方便使用,我们在mpp基础上又封装了一层;你也可以直接使用github rockhip-linux中开源的mpp库
作者: zouxf    时间: 2019-11-22 15:33
本帖最后由 zouxf 于 2019-11-23 10:13 编辑

多路解码的时候, 采用多个RGA(多个rga ctx)线程快,   或者一个RGA线程(一个rga ctx),不断的修改ctx 源地址和目标地址, 哪种效率更好?
作者: zouxf    时间: 2019-11-25 10:18
在RTSP解码的时候, 一版在画面有较大改变的时候(i帧?), 经常会报这两个错误, 这是什么原因导致的?  enqueue和dequeue之间,需要加互斥锁吗?
mpp_log: decode_get_frame failed, return -8.

mpp_log: MppDecoderDequeueFrame Get errror frame or discard frame
作者: someone9388    时间: 2019-12-13 16:23
本帖最后由 someone9388 于 2019-12-16 12:03 编辑

按照步骤完成,运行得到如下错误:
Open file(/boot/toybrick-release) failed
MppDecoderCreate error!

@hisping 请问,这个问题是什么问题? 该怎么解决?多谢!!!

作者: mrzs    时间: 2019-12-19 11:19
浏览器可以播这个RTSP流吗
作者: w910820618    时间: 2019-12-27 11:24
可以用来解h.265的视频吗
作者: lipandeng    时间: 2020-1-15 15:11
本帖最后由 lipandeng 于 2020-1-15 15:12 编辑

是不是不能解码1080p的h265视频啊 ,用264没问题,265图像错位了
作者: lipandeng    时间: 2020-1-15 15:14
有么有python调用硬解码功能的例子呢(rtsp)
作者: lipandeng    时间: 2020-1-15 17:38
硬解码后的图像颜色偏差很大,尤其和软解码对比更明显,不知道啥原因还有就是硬解码下cpu使用率还是有些高啊 70%-80%


作者: Sean    时间: 2020-3-9 14:11
someone9388 发表于 2019-12-13 16:23
按照步骤完成,运行得到如下错误:
Open file(/boot/toybrick-release) failed
MppDecoderCreate error!

请问大哥,你最后解决了吗,我也遇到了这个问题
作者: cr7jj    时间: 2020-3-10 17:01
[toybrick@toybrick build]$ ./rtsp_ssd
mpi: mpp version: Without VCS info
mpp_rt: NOT found ion allocator
mpp_rt: found drm allocator

什么原因?请问如何解决
作者: liyang    时间: 2020-3-22 22:56
zhouzhouzlove 发表于 2019-8-23 14:03
这个是使用已经编译好的固件,各项功能都齐全了,但是如果是自己制作的ubuntu文件系统呢?应该怎么部署开发 ...

同样请教 unbuntu中如何拿到rtsp流
作者: hisping    时间: 2020-3-23 09:04
liyang 发表于 2020-3-22 22:56
同样请教 unbuntu中如何拿到rtsp流

你可以使用任意一款开源架构比如live555获取rtsp数据,然后h264编码使用硬编码即可
作者: liyang    时间: 2020-3-25 00:03
zhouzhouzlove 发表于 2019-8-23 14:03
这个是使用已经编译好的固件,各项功能都齐全了,但是如果是自己制作的ubuntu文件系统呢?应该怎么部署开发 ...

我也想请问自己烧的ubuntu系统 如何调用rtsp视频流,有文档描述吗
作者: 1881949    时间: 2020-3-27 15:39
会出现延时吗?
作者: christian    时间: 2020-4-3 17:21
这个支持硬解的吗?
作者: christian    时间: 2020-4-10 16:32
lipandeng 发表于 2020-1-15 17:38
硬解码后的图像颜色偏差很大,尤其和软解码对比更明显,不知道啥原因还有就是硬解码下cpu使用率还是有些高 ...

你好,颜色偏差大有解决吗?
作者: christian    时间: 2020-4-10 16:36
局域网下测试,摄像头分辨率为1280*720,可以跑起来,但是发现硬解和软解对比颜色偏差比较大,而且硬解的时候,晃动摄像头会有偶尔会有 一点卡顿。还请版主给指导下这个该怎么排查的?
作者: lipandeng    时间: 2020-4-29 12:26
christian 发表于 2020-4-10 16:32
你好,颜色偏差大有解决吗?

解决了,系统是debian10 ,解决不了可以发邮寄给我:li.pandeng@163.com你参考下,
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <iostream>
  4. #include <string.h>
  5. #include <sys/types.h>
  6. #include <sys/stat.h>
  7. #include <fcntl.h>
  8. #include <thread>
  9. #include <memory.h>
  10. #include <sys/time.h>
  11. #include <queue>

  12. using namespace std;

  13. #include "opencv2/core/core.hpp"
  14. #include "opencv2/highgui/highgui.hpp"

  15. #include <rockchip/rockchip_rtsp.h>
  16. #include <rockchip/rockchip_mpp.h>
  17. extern "C" {
  18. #include <rockchip/rockchip_rga.h>
  19. }

  20. #define RTSP_URL        "rtsp://192.168.1.200/h264/ch1/main/av_stream"
  21. #define RTSP_USER        "admin"
  22. #define RTSP_PWD        "123456"

  23. static MppDecoder *mpp_dec = NULL;
  24. static std::queue<DecFrame *> frame_queue;
  25. static int run_flag = 0;

  26. unsigned long get_time(void)
  27. {
  28.         struct timeval ts;
  29.         gettimeofday(&ts, NULL);
  30.         return (ts.tv_sec * 1000 + ts.tv_usec / 1000);
  31. }

  32. void onRtspHandle(unsigned char *buf, size_t len)
  33. {
  34.         std::cout << "frame recived " << len << std::endl;

  35.         mpp_dec->ops->enqueue(mpp_dec, buf, len);
  36. }

  37. void inference_thread(RockchipRga *rga, int width, int height)
  38. {
  39.         int ret;
  40.         int resize_w = 1920, resize_h = 1080;
  41.         static int frame_size = 0;
  42.         unsigned char *frame_rgb = NULL;

  43.         rga->ops->initCtx(rga);
  44.         rga->ops->setRotate(rga, RGA_ROTATE_NONE);
  45.         rga->ops->setSrcFormat(rga, V4L2_PIX_FMT_NV12, width, height);
  46.         rga->ops->setDstFormat(rga, V4L2_PIX_FMT_BGR24, resize_w, resize_h);
  47.        
  48.         frame_size = resize_w * resize_h * 3;
  49.         frame_rgb = (unsigned char *)malloc(frame_size);
  50.         cv::Mat img(resize_h , resize_w , CV_8UC3, frame_rgb);
  51.         if (!frame_rgb)
  52.                 goto exit;
  53.        
  54.         rga->ops->setDstBufferPtr(rga, frame_rgb);

  55.         while (run_flag) {
  56.                 if (frame_queue.empty()) {
  57.                         usleep(1000);
  58.                         continue;
  59.                 }

  60.                 auto frame = frame_queue.front();

  61.                 rga->ops->setSrcBufferPtr(rga, frame->data);

  62.                 ret = rga->ops->go(rga);
  63.                 printf("inference_thread ................\n");
  64.                 if (!ret) {
  65.                         ///do something with frame_rgb

  66.                         cv::imshow("test", img);
  67.                         cv::waitKey(10);
  68.                 }

  69.                 frame_queue.pop();
  70.                 mpp_dec->ops->freeFrame(frame);
  71.         }

  72. exit:
  73.         run_flag = 0;

  74.         while (!frame_queue.empty()) {
  75.                 auto frame = frame_queue.front();
  76.                 mpp_dec->ops->freeFrame(frame);
  77.                 frame_queue.pop();
  78.         }

  79.         if (frame_rgb)
  80.                 free(frame_rgb);
  81. }

  82. void decode_thread(RockchipRga *rga)
  83. {
  84.         int ret;
  85.         int first_frame = 0;
  86.         std::thread t_inference;

  87.         while (run_flag) {
  88.                 DecFrame *frame = mpp_dec->ops->dequeue_timeout(mpp_dec, 300);
  89.                 if (frame != NULL) {
  90.                         std::cout << "decode frame" << frame->width << "x" << frame->height << std::endl;
  91.                
  92.                         if (!first_frame) {
  93.                                 std::cout << "first_frame" << std::endl;
  94.                                 t_inference = std::thread(inference_thread, rga, frame->width, frame->height);
  95.                                 first_frame = 1;
  96.                         }

  97.                         if (frame_queue.size() < 30)
  98.                                 frame_queue.push(frame);
  99.                         else
  100.                                 mpp_dec->ops->freeFrame(frame);
  101.                 }
  102.         }

  103. exit:
  104.         run_flag = 0;

  105.         t_inference.join();

  106.         while (!frame_queue.empty()) {
  107.                 auto frame = frame_queue.front();
  108.                 mpp_dec->ops->freeFrame(frame);
  109.                 frame_queue.pop();
  110.         }

  111. }

  112. int main(int argc, char **argv)
  113. {
  114.         int ret;
  115.         RockchipRga *rga;
  116.         unsigned char ready[5] = {'r', 'e', 'a', 'd', 'y'};
  117.         RtspClient rtsp_client(RTSP_URL, RTSP_USER, RTSP_PWD);

  118.         rtsp_client.setDataCallback(onRtspHandle);

  119.         mpp_dec = MppDecoderCreate(DECODE_TYPE_H264);
  120.         if (!mpp_dec) {
  121.                 std::cout << "MppDecoderCreate error!\n" << std::endl;
  122.                 return -1;
  123.         }

  124.         rga = RgaCreate();
  125.         if (!rga) {
  126.                 MppDecoderDestroy(mpp_dec);
  127.                 std::cout << "rgaCreate error!\n" << std::endl;
  128.                 return -1;
  129.         }

  130.         run_flag = 1;

  131.         rtsp_client.enable();

  132.         std::thread t_decode(decode_thread, rga);

  133.         while (run_flag) {
  134.                 usleep(10000);
  135.         }

  136.         rtsp_client.disable();

  137.         run_flag = 0;

  138.         t_decode.join();

  139.         RgaDestroy(rga);

  140.         MppDecoderDestroy(mpp_dec);

  141.         return 0;
  142. }

复制代码

作者: Davie_zju    时间: 2020-5-20 15:54
zerollzeng 发表于 2019-10-8 10:08
谢谢可以了,用vlc也不能打开,后来发现是路由问题,后来人引以为鉴哈哈

怎么解决的啊,我改网段的时候把路由也改了但还是有错,请问你是怎么解决的?
作者: Davie_zju    时间: 2020-5-20 15:56
cr7jj 发表于 2020-3-10 17:01
[toybrick@toybrick build]$ ./rtsp_ssd
mpi: mpp version: Without VCS info
mpp_rt: NOT found ion allo ...

请问你解决了吗
作者: Davie_zju    时间: 2020-5-20 15:56
cr7jj 发表于 2019-11-13 17:19
我想问问,后来怎么解决

请问你解决了吗




欢迎光临 Toybrick (http://t.rock-chips.com/) Powered by Discuz! X3.3