Toybrick

标题: RK3399Pro入门教程(8)6路1080P30帧解码显示范例 [打印本页]

作者: jefferyzhang    时间: 2019-8-26 10:53
标题: RK3399Pro入门教程(8)6路1080P30帧解码显示范例
本帖最后由 jefferyzhang 于 2019-9-4 10:58 编辑

[attach]509[/attach]



前言:

RK3399Pro拥有六路1080P30帧解码能力,很多开发者不知道如何快速搭建这么一个Demo,这里我们社区开发者团队编写了一套Toybrick简单上手的python库,可以让大家快速上手编写各种demo。
该库目前还在非常早期的测试版本阶段,还未正式发布。并且需要注意以下几点:

1. 该python模块仅用于快速开发调试,方便同学们将注意力放在神经网络上,但是不建议用于正式项目。
2. 该python模块仅授权Toybrick开发版使用,包含Toybrick 3399Pro和Toybrick 1808计算棒,其他产品我们无法提供支持。
3. 该python模块不开源。所有代码在各个模块的demo中都有,正式做项目还请参看RK的各个模块的demo来改。
4. 该python模块是为了让开发者专注于神经网络应用的调试,抽象的比较高层,不会提供太多底层控制接口。
5. 有Bug和需求反馈,直接回在帖子里,但是可能修改更新不会很及时,请见谅。


思路分析:

RK3399Pro的VPU支持多路编解码,主控想完成多路编解码并显示,需要有一些开发技巧:

1. 使用多线程处理不同的通路,避免时间被卡在相互等待上。
2. 显示建议用GPU OpenGL来做,速度快,也避免GPU在整个项目中被闲置。
3. Demo主要利用Rtsp获取数据,每个线程做的事基本就是 : Rtsp获取数据 - 解码 - 显示


逻辑代码:

  1. #!/usr/bin/env python3.6
  2. import os
  3. import toybrick as toy
  4. import time
  5. import threading


  6. def func_rtspdisplay(gl, index, url, usr, pwd):
  7.     rtsp = toy.input.createRtspClient(url, usr, pwd)
  8.     rtsp.connect()

  9.     last = time.time()
  10.     while rtsp.is_opened():
  11.         frame = rtsp.read_rgb(640, 360)
  12.         now = time.time()
  13.         gl.show(index, frame)
  14.         print("> [%d] got frame. use = %f s" % (index, now - last))
  15.         last = now

  16.     print('# End of Thread %d' % (index))


  17. if __name__ == '__main__':
  18.     os.system('iptables -F')  # Disable Firewall

  19.     gl = toy.output.createGLDrmDisplay(toy.DisplayPort.HDMI_A)
  20.     idx0 = gl.add_view(0, 180, 640, 360)
  21.     idx1 = gl.add_view(640, 180, 640, 360)
  22.     idx2 = gl.add_view(1280, 180, 640, 360)
  23.     idx3 = gl.add_view(0, 540, 640, 360)
  24.     idx4 = gl.add_view(640, 540, 640, 360)
  25.     idx5 = gl.add_view(1280, 540, 640, 360)

  26.     t0 = threading.Thread(target=func_rtspdisplay, args = (gl, idx0, "rtsp://192.168.169.13/cam/realmonitor?channel=1&subtype=0", "admin", "admin123"))
  27.     t1 = threading.Thread(target=func_rtspdisplay, args = (gl, idx1, "rtsp://192.168.169.16/cam/realmonitor?channel=1&subtype=0", "admin", "admin123"))
  28.     t2 = threading.Thread(target=func_rtspdisplay, args = (gl, idx2, "rtsp://192.168.169.13/cam/realmonitor?channel=1&subtype=0", "admin", "admin123"))
  29.     t3 = threading.Thread(target=func_rtspdisplay, args = (gl, idx3, "rtsp://192.168.169.16/cam/realmonitor?channel=1&subtype=0", "admin", "admin123"))
  30.     t4 = threading.Thread(target=func_rtspdisplay, args = (gl, idx4, "rtsp://192.168.169.13/cam/realmonitor?channel=1&subtype=0", "admin", "admin123"))
  31.     t5 = threading.Thread(target=func_rtspdisplay, args = (gl, idx5, "rtsp://192.168.169.16/cam/realmonitor?channel=1&subtype=0", "admin", "admin123"))

  32.     t0.start()
  33.     t1.start()
  34.     t2.start()
  35.     t3.start()
  36.     t4.start()
  37.     t5.start()

  38.     t0.join()
  39.     t1.join()
  40.     t2.join()
  41.     t3.join()
  42.     t4.join()
  43.     t5.join()
复制代码

[attach]506[/attach]


代码解析:
1. main函数首先创建了一个OpenGL via DRM的显示接口,输出目的地是HDMI-A
2. 然后该接口允许我们在屏幕上新建6个不同位置的显示窗口
3. 完成后新建了6个线程,每个线程都执行同样的一个函数 func_rtspdisplay
4. func_rtspdisplay函数都通过传入参数获取rtsp码流,然后直接显示在第二步建立的gl窗口上。


该套库的特点:

1. 自动使用VPU硬件进行解码
2. 解码到缩放到显示全部是硬件连续地址,没有mmap虚拟地址,完全0拷贝,速度很快。
3. 使用GPU绘制6路显示接口,不占用CPU资源。


效果图:

[attach]512[/attach][attach]513[/attach]

---------------- 二楼提供快速开发工具包说明 --------------->






作者: jefferyzhang    时间: 2019-8-26 10:53
本帖最后由 jefferyzhang 于 2020-3-17 18:12 编辑



快速开发包简介:

1. 收集和提供常用input/output接口抽象(目前版本input仅有rtsp client,output仅有显示)
2. 对接numpy array和3399硬件buffer分配和操作接口
3. 对接硬件RGA实现缩放、旋转
4. 对接硬件GPU实现OpenGL显示
5. 目前还处于非常早期的开发阶段,仅能保证多路Rtsp解码显示Sample能正常运行。


版权说明:

1. 该快速开发库由Toybrick社区开发团队编写,并未授权开放源码,使用上有问题也请直接在社区提出。
2. 仅授权Toybrick开发版使用(包含Toybrick 3399Pro和Toybrick 1808计算棒,并不包含任何EVB开发版,也不包含Rockchip其他芯片方案),不建议在Toybrick正式项目使用。


API接口列表:

  1. # Main API Lists V0.2.X

  2. ## Graphic Buffer

  3. gbuf = toybrick.createGraphicBuffer(width, height, GraphicFormat.<format>)      # 新建buffer
  4. gbuf.array()                                                                    # 获取np数组
  5. gbuf.resize(width, height)                                                      # 缩放
  6. gbuf.rotate(degree)                                                             # 旋转
  7. gbuf.memcpy_from(byte_list)                                                     # 从np数组拷贝


  8. ## toybrick.in                                                                  # 输入

  9. rtspc = toybrick.in.createRtspClient(url, user, password, usetcp, verbose)      # 新建Rtsp客户端
  10. rtspc.set_url(url, user, password)                                              # 设置rtsp地址(如果构造时候没设置的话)
  11. rtspc.connect()                                                                 # 开始连接
  12. rtspc.disconnect()                                                              # 断开连接
  13. rtspc.read_rgb(width, height) -> GraphicBuffer                                  # 获取RGB帧(自带缩放)


  14. ## toybrick.out                                                                 # 输出

  15. drmdisp = toybrick.out.createDrmDisplay(DisplayPort.<port>, DisplayMode.<mode>) # DRM显示输出(建议用GL来显示)
  16. drmdisp.printConnects()                                                         # 打印出所有可显示设备
  17. drmdisp.show(index, frame)                                                      # 在mode的index位置显示一帧 (只支持GraphicBuffer)

  18. gldisp = toybrick.output.createGLDrmDisplay(DisplayPort.<port>)                 # OpenGL via DRM 显示
  19. gldisp.add_view(x, y, w, h) -> index                                            # 新增矩形显示区域 (屏幕左下角为坐标原点,右上角为(1920, 1080))
  20. gldisp.show(index, frame)                                                       # 在index的view区域显示一帧(只支持GraphicBuffer)

复制代码
(rockx python 从这里去除,因为rockx已经有python版本了)


下载地址:

链接: https://pan.baidu.com/s/1RxHPu5ogBD0WNtHpQ3RXTg 提取码: snwf


安装方式:

  1. dnf install python3-toybrick-0.2-8.aarch64.rpm
复制代码


卸载方式:

  1. dnf remove python3-toybrick
复制代码

如果卸载报错(测试版本很可能会陷入卸载报错永远卸载不掉的情况), 可以增加卸载参数 --setopt=tsflags=noscripts来解决:
  1. dnf remove --setopt=tsflags=noscripts  python3-toybrick
复制代码


新增Debian10安装:

下载地址:链接: https://pan.baidu.com/s/1AkJ70nTTIIXbgDYbF6IPUQ 提取码: b54n
  1. sudo apt install rockchip-mpp
  2. sudo apt install toybrick-gbm-dev
  3. sudo toybrick-mali.sh link
  4. pip3 install xxxxxx.whl
复制代码


作者: bingqingsuimeng    时间: 2019-9-3 10:25
有OpenGL via DRM的C++示例吗?
作者: jefferyzhang    时间: 2019-9-4 08:19
bingqingsuimeng 发表于 2019-9-3 10:25
有OpenGL via DRM的C++示例吗?

这个mali库就是libmali_gbm.so的,通过这个库渲染的就是通过DRM显示的。
然后mali还有libmali_x11.so和libmali_wayland.so对应不同的显示管理平台。

基础示例我曾经给客户写过一个,可以参考:https://github.com/Jerzha/samples-rklinux-opengl
然后可以参考glmark2的源码,那里头有各种画图平台的GL用法。
作者: shopping    时间: 2019-9-5 09:01
你好,我是 rk3399 pro 开发板,debian9 系统。以上技术方案有没有我们这个对应版本的,我计划用 2个 USB-摄像头 ,这样的话,1080p 30帧能达到吗?
作者: jefferyzhang    时间: 2019-9-5 12:06
shopping 发表于 2019-9-5 09:01
你好,我是 rk3399 pro 开发板,debian9 系统。以上技术方案有没有我们这个对应版本的,我计划用 2个 USB- ...

usb cam的这个要评估usb带宽够不够。我们板子上处理是没有问题的。这个我跟我们老大说下,看看能不能做个demo
作者: geekioe    时间: 2019-9-6 12:00
1、使用上述的方式做6路摄像头硬解码;
2、然后再对6路视频流做人脸检测,做人脸计数;
这样理论上是否可行?
作者: shopping    时间: 2019-9-6 14:42
jefferyzhang 发表于 2019-9-5 12:06
usb cam的这个要评估usb带宽够不够。我们板子上处理是没有问题的。这个我跟我们老大说下,看看能不能做个 ...

好的,谢谢,最起码 720p 。
作者: jefferyzhang    时间: 2019-9-6 14:59
geekioe 发表于 2019-9-6 12:00
1、使用上述的方式做6路摄像头硬解码;
2、然后再对6路视频流做人脸检测,做人脸计数;
这样理论上是否可行 ...

当然可行,看你模型运行速度是多少,你需要的帧率是多少,一个NPU够不够算,不够就多加几个。
带宽上是没有问题的。
作者: geekioe    时间: 2019-9-9 09:28
jefferyzhang 发表于 2019-9-6 14:59
当然可行,看你模型运行速度是多少,你需要的帧率是多少,一个NPU够不够算,不够就多加几个。
带宽上是没 ...

get~
我自己测试看看,不够的话,挂在计算棒的形式是可行的对吧?
作者: jefferyzhang    时间: 2019-9-9 09:57
geekioe 发表于 2019-9-9 09:28
get~
我自己测试看看,不够的话,挂在计算棒的形式是可行的对吧?

如果你自己做板子,是可以挂在1808上的,我们1808是有usb总线的
作者: shopping    时间: 2019-9-9 14:26
jefferyzhang 发表于 2019-9-6 14:59
当然可行,看你模型运行速度是多少,你需要的帧率是多少,一个NPU够不够算,不够就多加几个。
带宽上是没 ...

你好,以后公司是计划一个板子同时处理两路视频的输入,看你说的,NPU可以自己加,还是联系厂家帮忙?
作者: jefferyzhang    时间: 2019-9-9 15:05
shopping 发表于 2019-9-9 14:26
你好,以后公司是计划一个板子同时处理两路视频的输入,看你说的,NPU可以自己加,还是联系厂家帮忙? ...

1808计算棒,随便加。。。
3399Pro带一个NPU,1808计算棒也带NPU,你想插几个都可以
作者: Sean    时间: 2019-9-10 11:12
下载地址失效了,请问是怎么回事啊???
作者: shopping    时间: 2019-9-10 16:45
本帖最后由 shopping 于 2019-9-10 16:46 编辑
jefferyzhang 发表于 2019-9-9 15:05
1808计算棒,随便加。。。
3399Pro带一个NPU,1808计算棒也带NPU,你想插几个都可以 ...

贵公司的NPU可以同时跑两个目标检测算法模型吗(mobilenet-ssd这种)?如果可以,帧率最大会是多少? 还有你那个1080的棒子多少钱一个?
作者: jefferyzhang    时间: 2019-9-11 08:16
shopping 发表于 2019-9-10 16:45
贵公司的NPU可以同时跑两个目标检测算法模型吗(mobilenet-ssd这种)?如果可以,帧率最大会是多少? 还有 ...

请看本社区顶部商城链接和wiki链接
作者: kyeteo    时间: 2019-9-16 11:04
    dnf install python3-toybrick-0.2-8.aarch64.rpm
这个指令无法安装,显示找不到包是啥原因呀
作者: 18958105257    时间: 2019-9-16 13:41
@jefferyzhang  你好j链接: https://pan.baidu.com/s/1B1tt0YptruPuNLekCuh5gQ 提取码: d91q; 这个地址过期了,能不能再发一份;谢谢;

作者: jefferyzhang    时间: 2019-9-17 09:05
18958105257 发表于 2019-9-16 13:41
@jefferyzhang  你好j链接: https://pan.baidu.com/s/1B1tt0YptruPuNLekCuh5gQ 提取码: d91q; 这个地址过 ...

链接: https://pan.baidu.com/s/1RxHPu5ogBD0WNtHpQ3RXTg 提取码: snwf 复制这段内容后打开百度网盘手机App,操作更方便哦
作者: jefferyzhang    时间: 2019-9-17 09:05
kyeteo 发表于 2019-9-16 11:04
dnf install python3-toybrick-0.2-8.aarch64.rpm
这个指令无法安装,显示找不到包是啥原因呀 ...

下载到本地安装
作者: duanyanbiao    时间: 2019-9-18 18:18
ImportError: librknn_api.so: cannot open shared object file: No such file or directory
我遇到这个问题,是因为系统版本太老吗?
作者: jefferyzhang    时间: 2019-9-19 10:18
duanyanbiao 发表于 2019-9-18 18:18
ImportError: librknn_api.so: cannot open shared object file: No such file or directory
我遇到这个问 ...

No such file or directory

是toybrick板子么?我们所有固件都有这个so
作者: 18958105257    时间: 2019-9-19 14:14




  File "1demo_multi_gldisplay.py", line 3, in <module>
    import toybrick as toy
  File "/usr/local/lib/python3.6/site-packages/toybrick/__init__.py", line 18, in <module>
    from toybrick.rockx import createRockx, RockxType, Rockx
  File "/usr/local/lib/python3.6/site-packages/toybrick/rockx.py", line 1, in <module>
    from . import rkrockx
ImportError: librockx.so: cannot open shared object file: No such file or directory
请教一下,报librockx.so  板子是你们的 , 系统fedaro 28, V1.5
作者: 18958105257    时间: 2019-9-19 16:10
已经找到了,谢谢
作者: jefferyzhang    时间: 2019-9-19 17:27
18958105257 发表于 2019-9-19 14:14
File "1demo_multi_gldisplay.py", line 3, in
    import toybrick as toy
  File "/usr/local/lib ...

嗯,rockx是要单独安装的。
作者: yuys    时间: 2019-9-24 14:20
jefferyzhang 发表于 2019-9-19 17:27
嗯,rockx是要单独安装的。

版主怎么安装呢?有教程?
作者: jefferyzhang    时间: 2019-9-24 14:52
yuys 发表于 2019-9-24 14:20
版主怎么安装呢?有教程?

查看论坛置顶rockx发布贴
作者: sliver    时间: 2019-10-11 17:22
jefferyzhang 发表于 2019-8-26 10:53
快速开发包简介:

1. 收集和提供常用input/output接口抽象(目前版本input仅有rtsp client,output仅有 ...

GPU显示的时候,是把RGB图片生成纹理贴上去的吗
作者: jefferyzhang    时间: 2019-10-12 08:47
sliver 发表于 2019-10-11 17:22
GPU显示的时候,是把RGB图片生成纹理贴上去的吗

是的,而且纹理不一定是RGB格式,openGL的纹理支持很多种格式。具体可以查看下gl的文档。

作者: heyunteng251314    时间: 2019-10-28 14:05
版主,你好!目前我基于opengl es上实时播放MP4视频数据,发现处理速率很慢。处理流是将MP4中H264码流中的YUV420数据用GPU模块转化成RGB,将RGB数据生成纹理贴图通过DRM来显示,2560*1440的数据流处理速率在20ms/Fs的情况,感觉有点慢。请问你显示6路,YUV数据流是怎么转化的呢?
作者: jefferyzhang    时间: 2019-10-28 14:17
heyunteng251314 发表于 2019-10-28 14:05
版主,你好!目前我基于opengl es上实时播放MP4视频数据,发现处理速率很慢。处理流是将MP4中H264码流中的Y ...

shader转换。sample可以参看下gles的例子。

作者: heyunteng251314    时间: 2019-10-28 17:16
本帖最后由 heyunteng251314 于 2019-10-28 17:18 编辑
jefferyzhang 发表于 2019-10-28 14:17
shader转换。sample可以参看下gles的例子。

很感激版主的回复!我用的就是shader的转化模式D:\CodeFile\shader.bmp,我想请教一下你,你那DEMON是直接用YUV做贴图,没有转化成RGB的过程嘛?
作者: jefferyzhang    时间: 2019-10-28 17:20
heyunteng251314 发表于 2019-10-28 17:16
很感激版主的回复!我用的就是shader的转化模式,我想请教一下你,你那DEMON是直接用YUV做贴图,没有转化成 ...

你百度下就有了吧,这个很多的。我现在凭空也找不出代码给你啊。。。
我那个是直接YUV贴的,主要是看前面出来的的格式,264解出来就是nv12了,就不用再转一次了,浪费时间。

作者: jefferyzhang    时间: 2019-10-28 17:23
还有要看opengl最终画布大小,最终画布1080p的话,就画这么6个矩形不需要多少时间的。
这颗gpu在安卓玩3d游戏都没啥问题,就这么6个矩形也不是什么问题。
作者: iamher0    时间: 2019-11-4 17:01
本帖最后由 iamher0 于 2019-11-4 17:07 编辑

debian上的安装包有吗?另外 mpp出来的视频帧,输入到NPU,可以实现零COPY吗?

作者: jefferyzhang    时间: 2019-11-4 19:00
iamher0 发表于 2019-11-4 17:01
debian上的安装包有吗?另外 mpp出来的视频帧,输入到NPU,可以实现零COPY吗?
...

没有。
NPU都不可能0拷贝,就像PC上GPU也不可能0拷贝,两个ddr不是通的
作者: iamher0    时间: 2019-11-5 09:03
jefferyzhang 发表于 2019-11-4 19:00
没有。
NPU都不可能0拷贝,就像PC上GPU也不可能0拷贝,两个ddr不是通的

通过DMA呢,不通过CPU可行吗?
作者: jefferyzhang    时间: 2019-11-5 09:31
iamher0 发表于 2019-11-5 09:03
通过DMA呢,不通过CPU可行吗?

不可行,主控DDR和NPU的DDR之间没有DMA
作者: shopping    时间: 2019-11-6 14:10
bingqingsuimeng 发表于 2019-9-3 10:25
有OpenGL via DRM的C++示例吗?

老哥,请问你 DRM 显示搞好没有?
作者: cr7jj    时间: 2019-11-9 09:58
你好,我试过用你这个代码不能播放VLC流,怎么解决?
作者: huangzk    时间: 2019-11-11 14:20
您好,请问这边有 android 平台 6路 播放的 apk demo吗?
作者: zouxf    时间: 2019-11-25 10:02
请问,这里用OpenGL做显示, NV12->RGB还是用RGA来完成的吗?
另外, 直接通过libdrm做显示, 和OpenGL相比,哪个效率更高呢?
作者: jefferyzhang    时间: 2019-11-25 10:33
zouxf 发表于 2019-11-25 10:02
请问,这里用OpenGL做显示, NV12->RGB还是用RGA来完成的吗?
另外, 直接通过libdrm做显示, 和OpenGL相 ...

1. opengl用shader直接吃nv12,不需要rga转换。
2. opengl画完一样也要通过libdrm接口显示,不存在什么效率哪个高,这两个是串型的两个步骤
作者: zouxf    时间: 2019-11-25 11:13
jefferyzhang 发表于 2019-11-25 10:33
1. opengl用shader直接吃nv12,不需要rga转换。
2. opengl画完一样也要通过libdrm接口显示,不存在什么效 ...

好的, 多谢。
现在发现解RTSP的时候, 丢帧的情况还是比较明显。 和PC上VLC播RTSP流相比, rockchip_rtsp+mpp 几乎没有时延, 但是会丢帧,尤其画面变化的时候,画面会卡顿一下。 vlc会有比较明显是时延,大概2s, 但是画面很稳定,不会出现卡顿丢帧的情况。
而且这个现象和多路好像没关系, 一路的时候,也会出现。

丢帧的时候, mpp会报
mpp_log: decode_get_frame failed, return -8.
或者
mpp_log: MppDecoderDequeueFrame Get errror frame or discard frame.


作者: zouxf    时间: 2019-11-26 15:31
我这里用libdrm做显示,关掉xorg, 貌似解12路1080P h265, 也挺流畅的。 不过我这里由于只有三路实际的rtsp流, 所以应用里每4四路读的是同一路rtsp流,不知道跟实际12路rtsp流有没有差别。
作者: someone9388    时间: 2019-12-13 16:31
按照例子执行,显示器黑屏, 终端输出如下信息:

[toybrick@toybrick workspace]$ ./demo_multi_gldisplay.py
Fatal: can't open lock file /run/xtables.lock: Permission denied
[12/13 03:28:31.128] D/: drm display open ...
[12/13 03:28:31.128] D/: Found display connectors: (encoders: 1)
[12/13 03:28:31.367] D/: #[0] id: 91, type :HDMIA       (CONNECTED)
[12/13 03:28:31.367] D/:         + [0] 1920x1080 : 1920x1080
[12/13 03:28:31.367] D/:         + [1] 1920x1080 : 1920x1080
[12/13 03:28:31.367] D/:         + [2] 1920x1080i : 1920x1080
[12/13 03:28:31.367] D/:         + [3] 1920x1080i : 1920x1080
[12/13 03:28:31.367] D/:         + [4] 1920x1080 : 1920x1080
[12/13 03:28:31.367] D/:         + [5] 1920x1080i : 1920x1080
[12/13 03:28:31.367] D/:         + [6] 1680x1050 : 1680x1050
[12/13 03:28:31.368] D/:         + [7] 1280x1024 : 1280x1024
[12/13 03:28:31.368] D/:         + [8] 1280x1024 : 1280x1024
[12/13 03:28:31.368] D/:         + [9] 1440x900 : 1440x900
[12/13 03:28:31.368] D/:         + [10] 1280x960 : 1280x960
[12/13 03:28:31.368] D/:         + [11] 1280x720 : 1280x720
[12/13 03:28:31.368] D/:         + [12] 1280x720 : 1280x720
[12/13 03:28:31.368] D/:         + [13] 1280x720 : 1280x720
[12/13 03:28:31.368] D/:         + [14] 1024x768 : 1024x768
[12/13 03:28:31.368] D/:         + [15] 1024x768 : 1024x768
[12/13 03:28:31.368] D/:         + [16] 1024x768 : 1024x768
[12/13 03:28:31.368] D/:         + [17] 832x624 : 832x624
[12/13 03:28:31.369] D/:         + [18] 800x600 : 800x600
[12/13 03:28:31.369] D/:         + [19] 800x600 : 800x600
[12/13 03:28:31.369] D/:         + [20] 800x600 : 800x600
[12/13 03:28:31.369] D/:         + [21] 800x600 : 800x600
[12/13 03:28:31.369] D/:         + [22] 720x576 : 720x576
[12/13 03:28:31.369] D/:         + [23] 720x480 : 720x480
[12/13 03:28:31.369] D/:         + [24] 720x480 : 720x480
[12/13 03:28:31.369] D/:         + [25] 640x480 : 640x480
[12/13 03:28:31.369] D/:         + [26] 640x480 : 640x480
[12/13 03:28:31.369] D/:         + [27] 640x480 : 640x480
[12/13 03:28:31.369] D/:         + [28] 640x480 : 640x480
[12/13 03:28:31.369] D/:         + [29] 640x480 : 640x480
[12/13 03:28:31.370] D/:         + [30] 720x400 : 720x400
[12/13 03:28:31.370] D/: End of Found
[12/13 03:28:31.601] D/: connecting to [0] mode [0] 1920x1088
[12/13 03:28:31.601] D/: found encoder id: 90
[12/13 03:28:31.601] D/: found crtc id: 64
[12/13 03:28:31.606] D/: set crts : crtc_id: 64
[12/13 03:28:31.607] D/: set crtc : encoder crtc_id: 0
[12/13 03:28:31.643] D/: [0]insert display buffer : 0x558a361f40
[12/13 03:28:31.646] D/: set crts : crtc_id: 64
[12/13 03:28:31.646] D/: set crtc : encoder crtc_id: 0
[12/13 03:28:31.659] D/: [1]insert display buffer : 0x558a3c61e0
[12/13 03:28:31.660] D/: OpenGLES initializing ...
[12/13 03:28:31.664] D/: * EGL_VERSION = 1.4 Midgard-"r13p0-00rel0" (have 22 configs)
[12/13 03:28:31.665] D/: getEglSurface 154 gbmSurface=0x7f9005b3f0

[12/13 03:28:31.671] D/: changeEglSurface 169 gbmSurface=0x7f9019fe40

[12/13 03:28:33.161] D/: drm render open ...
[12/13 03:28:34.743] D/:  mMppCtx null or no init...
[12/13 03:28:34.743] D/: listening rtp port 10913
[12/13 03:28:34.743] D/: listening rtcp port 10914
[12/13 03:28:34.746] D/: curlto rtsp://192.168.2.95 , cli 10913:10923, tcp: 0
[12/13 03:28:34.765] D/: # Found [0] media: video
[12/13 03:28:34.766] D/: # Found [0] control: rtsp://192.168.2.95/trackID=1
[12/13 03:28:34.766] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
[12/13 03:28:34.766] D/: # Total found 1 channel(s).
[12/13 03:28:34.766] D/: TRACK [0] : rtsp://192.168.2.95/trackID=1 , format=1
[12/13 03:28:34.766] D/: setup 10913 , 10914, uri: rtsp://192.168.2.95/trackID=1
[12/13 03:28:34.813] D/: drm render open ...
[12/13 03:28:34.839] D/: Video SSRC Changed! 0 -> 2074585690
mpi: mpp version: Without VCS info
mpp_rt: NOT found ion allocator
mpp_rt: found drm allocator
[12/13 03:28:34.848] D/: aaaaaaaaaaaaaaa
[12/13 03:28:34.848] D/: 11111111
[12/13 03:28:34.848] D/: bbbbbbbbbbbbbb
[12/13 03:28:34.849] D/: aaaaaaaaaaaaaaa
[12/13 03:28:34.849] D/: bbbbbbbbbbbbbb
[12/13 03:28:34.880] D/: aaaaaaaaaaaaaaa
[12/13 03:28:34.881] D/: bbbbbbbbbbbbbb
[12/13 03:28:34.882] D/: aaaaaaaaaaaaaaa
[12/13 03:28:34.882] D/: bbbbbbbbbbbbbb
[12/13 03:28:34.882] D/: aaaaaaaaaaaaaaa


作者: fly    时间: 2019-12-18 16:13
yuys 发表于 2019-9-24 14:20
版主怎么安装呢?有教程?

请问你装上了吗? 我也遇到这个问题了
作者: fly    时间: 2019-12-18 16:14
本帖最后由 fly 于 2019-12-18 19:36 编辑
jefferyzhang 发表于 2019-9-24 14:52
查看论坛置顶rockx发布贴

那个帖子是一个zip包,里面解压出来有找到librockx.so,拷贝到/usr/lib64下就可以了。
作者: fly    时间: 2019-12-18 19:36
someone9388 发表于 2019-12-13 16:31
按照例子执行,显示器黑屏, 终端输出如下信息:

[toybrick@toybrick workspace]$ ./demo_multi_gldisplay ...

我也黑屏了。。。你搞定了吗?
作者: fly    时间: 2019-12-18 19:49
[12/18 19:44:09.727] D/: drm display open ...
[12/18 19:44:09.727] D/: Found display connectors: (encoders: 2)
[12/18 19:44:09.940] D/: #[0] id: 91, type :HDMIA        (CONNECTED)
[12/18 19:44:09.940] D/:          + [0] 1600x900 : 1600x900
[12/18 19:44:09.940] D/:          + [1] 1920x1080 : 1920x1080
[12/18 19:44:09.940] D/:          + [2] 1920x1080 : 1920x1080
[12/18 19:44:09.940] D/:          + [3] 1280x1024 : 1280x1024
[12/18 19:44:09.941] D/:          + [4] 1280x1024 : 1280x1024
[12/18 19:44:09.941] D/:          + [5] 1152x864 : 1152x864
[12/18 19:44:09.941] D/:          + [6] 1280x720 : 1280x720
[12/18 19:44:09.941] D/:          + [7] 1280x720 : 1280x720
[12/18 19:44:09.941] D/:          + [8] 1024x768 : 1024x768
[12/18 19:44:09.941] D/:          + [9] 1024x768 : 1024x768
[12/18 19:44:09.941] D/:          + [10] 800x600 : 800x600
[12/18 19:44:09.941] D/:          + [11] 800x600 : 800x600
[12/18 19:44:09.941] D/:          + [12] 640x480 : 640x480
[12/18 19:44:09.941] D/:          + [13] 640x480 : 640x480
[12/18 19:44:09.941] D/:          + [14] 640x480 : 640x480
[12/18 19:44:09.941] D/:          + [15] 720x400 : 720x400
[12/18 19:44:09.941] D/: #[1] id: 98, type isplayPort        (DISCONNECTED)
[12/18 19:44:09.941] D/: End of Found
[12/18 19:44:10.157] D/: connecting to [0] mode [0] 1600x912
[12/18 19:44:10.157] D/: found encoder id: 90
[12/18 19:44:10.157] D/: use crtc 0 as default
[12/18 19:44:10.162] D/: set crts : crtc_id: 64
[12/18 19:44:10.163] D/: set crtc : encoder crtc_id: 64
[12/18 19:44:10.173] D/: [0]insert display buffer : 0x558428fbd0
[12/18 19:44:10.179] D/: set crts : crtc_id: 64
[12/18 19:44:10.179] D/: set crtc : encoder crtc_id: 64
[12/18 19:44:10.189] D/: [1]insert display buffer : 0x5583f532d0
[12/18 19:44:10.190] D/: OpenGLES initializing ...
[12/18 19:44:10.194] D/: * EGL_VERSION = 1.4 Midgard-"r13p0-00rel0" (have 22 configs)
[12/18 19:44:10.195] D/: getEglSurface 154 gbmSurface=0x7f6405b480

[12/18 19:44:10.201] D/: changeEglSurface 169 gbmSurface=0x7f6419fed0

[12/18 19:44:10.979] D/: drm render open ...
[12/18 19:44:11.027] D/: listening rtcp port 30938
[12/18 19:44:11.027] D/: listening rtp port 30937
[12/18 19:44:11.029] D/: curlto rtsp://192.168.10.113:554/ch1/main/av_stream , cli 30937:30947, tcp: 0
[12/18 19:44:11.027] D/:  mMppCtx null or no init...
[12/18 19:44:11.045] D/: # Found [0] media: video
[12/18 19:44:11.045] D/: # Found [0] control: trackID=0
[12/18 19:44:11.046] D/: # Found [0] rtpmap: id:96 format:H265 bitrate:90000
[12/18 19:44:11.046] D/: # Total found 1 channel(s).
[12/18 19:44:11.046] D/: TRACK [0] : trackID=0 , format=2
[12/18 19:44:11.046] D/: setup 30937 , 30938, uri: rtsp://192.168.10.113:554/ch1/main/av_stream/trackID=0
# Start of Thread 0
[12/18 19:44:11.054] D/: drm render open ...
[12/18 19:44:11.100] D/: Video SSRC Changed! 0 -> 13109230
mpi: mpp version: Without VCS info
mpp_rt: NOT found ion allocator
mpp_rt: found drm allocator
[12/18 19:44:11.111] D/: aaaaaaaaaaaaaaa
[12/18 19:44:11.111] D/: 11111111
[12/18 19:44:11.112] D/: bbbbbbbbbbbbbb
[12/18 19:44:11.112] D/: aaaaaaaaaaaaaaa
[12/18 19:44:11.112] D/: bbbbbbbbbbbbbb
[12/18 19:44:11.112] D/: aaaaaaaaaaaaaaa
[12/18 19:44:11.112] D/: bbbbbbbbbbbbbb
[12/18 19:44:11.113] D/: aaaaaaaaaaaaaaa
[12/18 19:44:11.113] D/: bbbbbbbbbbbbbb
[12/18 19:44:11.129] E/: (mergeFuToRtpNalU in unit_rtp_h265_unpack.cpp:182): fua not start! maybe rtp packet lost!
[12/18 19:44:11.130] D/: aaaaaaaaaaaaaaa

同黑屏。。
作者: w910820618    时间: 2019-12-26 15:28
本帖最后由 w910820618 于 2019-12-26 15:39 编辑

大神啊,为什么我用你们提供的Python库无法导入成功啊,总是提示我 ImportError: cannot import name 'rkbuffer' 我到根目录下看根本就没有rkbuffer.py这个文件啊
作者: jefferyzhang    时间: 2019-12-26 17:34
w910820618 发表于 2019-12-26 15:28
大神啊,为什么我用你们提供的Python库无法导入成功啊,总是提示我 ImportError: cannot import name 'rkbu ...

rkbuffer是一个so,不是py
作者: w910820618    时间: 2019-12-26 17:48
jefferyzhang 发表于 2019-12-26 17:34
rkbuffer是一个so,不是py

那我应该怎么做呢?我是按照教程上的方式安装的,你能给点提示吗?我这里实在着急?
作者: jefferyzhang    时间: 2019-12-26 20:06
本帖最后由 jefferyzhang 于 2019-12-26 20:08 编辑
w910820618 发表于 2019-12-26 17:48
那我应该怎么做呢?我是按照教程上的方式安装的,你能给点提示吗?我这里实在着急? ...

报了什么错?报的错发出来看下。还有你的系统、版本信息之类的都发出来

作者: w910820618    时间: 2019-12-27 08:51
本帖最后由 w910820618 于 2019-12-27 08:53 编辑

我用的是ferdoa 的操作系统,报错信息就是提示我 无法加载 那些 so的库
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/toybrick/__init__.py", line 7, in <module>
    from toybrick import graphic_buffer
  File "/usr/local/lib/python3.6/site-packages/toybrick/graphic_buffer.py", line 1, in <module>
    from . import rkbuffer
SystemError: initialization of rkbuffer did not return an extension module


作者: jefferyzhang    时间: 2019-12-27 09:01
w910820618 发表于 2019-12-27 08:51
我用的是ferdoa 的操作系统,报错信息就是提示我 无法加载 那些 so的库
Traceback (most recent call last) ...

从这信息看,只有两种可能:
1. 你用的是非常早期的固件,不支持这个接口,这种情况下你只要烧写toybrick最新固件就解决了。
2. 你用的不是toybrick板子,这个我就没办法去支持了。
作者: w910820618    时间: 2019-12-27 09:21
jefferyzhang 发表于 2019-12-27 09:01
从这信息看,只有两种可能:
1. 你用的是非常早期的固件,不支持这个接口,这种情况下你只要烧写toybrick ...

我用的是Rockpi4 这个板子,但是我刷的系统是你们家的系统。这个板子的芯片也是RK3399,它不能使用你们的mpp库吗。这块我不太懂,我现在正在尝试用这个板子进行视频解码,我已经编译好了github上面的mpp了,但是在运行一些项目的时候,我还是不能加载相应的库。我其实想知道这是因为板子和芯片不匹配的原因吗?
作者: jefferyzhang    时间: 2019-12-27 09:29
w910820618 发表于 2019-12-27 09:21
我用的是Rockpi4 这个板子,但是我刷的系统是你们家的系统。这个板子的芯片也是RK3399,它不能使用你们的 ...

这个你得去问RockPi了,而且你这都不带npu,怎么可能能用我写的toybrick库。
mpp你直接用github开源的是没问题的。
作者: w910820618    时间: 2019-12-27 12:57
我想问一下,怎么判断我解码是否成功了呢?解码器输出的是一张图片,还是什么呢?
作者: w910820618    时间: 2019-12-27 15:24
大神,能不能解释 mpp_frame_get_errinfo 和 mpp_frame_get_discard 这两个函数是什么意思? 为什么在 mpi_dec_test 中就没有提示,在mpi_dec_muli_test就是 提示 decoder_get_frame get err info:1 discard:0,这是什么意思呢?我在文档里面都没有找到相应的解释。
作者: jefferyzhang    时间: 2019-12-27 17:08
w910820618 发表于 2019-12-27 15:24
大神,能不能解释 mpp_frame_get_errinfo 和 mpp_frame_get_discard 这两个函数是什么意思? 为什么在 mpi_ ...

mpp不是我写的,我也只是使用者,这种问题建议直接发去github mpp那个工程的issues里,他们那边高手会回答你的
作者: iceman    时间: 2020-1-5 17:01
有没有可以在windows+python下加载的toybrick包。
import toybrick as toy
作者: jefferyzhang    时间: 2020-1-5 20:45
iceman 发表于 2020-1-5 17:01
有没有可以在windows+python下加载的toybrick包。
import toybrick as toy

当然没有
作者: zhaojiyuan6    时间: 2020-1-9 16:07
jefferyzhang 发表于 2019-9-19 10:18
No such file or directory

是toybrick板子么?我们所有固件都有这个so

我也是与遇到这个问题,非常着急 ,我用的是 tb 91的板子,应该跟 toybrick没太大的区别吧
  1. Traceback (most recent call last):
  2.   File "demo_multi_gldisplay.py", line 3, in <module>
  3.     import toybrick as toy
  4.   File "/usr/local/lib/python3.6/site-packages/toybrick/__init__.py", line 35, in <module>
  5.     from toybrick.rockx import createRockx, RockxType, Rockx
  6.   File "/usr/local/lib/python3.6/site-packages/toybrick/rockx.py", line 1, in <module>
  7.     from . import rkrockx
  8. ImportError: librockx.so: cannot open shared object file: No such file or directory
复制代码


已经按照要求安装了rockx,但是还是现象一样的。librockx.so文件在系统的 /usr/lib64/librockx.so 下有找到对应文件

作者: SodrSnne    时间: 2020-3-5 17:48
新的debian10固件怎么安装这个库,帖子里面提供的是Ferdora的包
作者: jefferyzhang    时间: 2020-3-5 17:56
SodrSnne 发表于 2020-3-5 17:48
新的debian10固件怎么安装这个库,帖子里面提供的是Ferdora的包

这是python的库,跟系统无关....
作者: SodrSnne    时间: 2020-3-5 17:59
jefferyzhang 发表于 2020-3-5 17:56
这是python的库,跟系统无关....

是啊,但是帖子前面提供的是rpm的安装包应该对应Fedora系统吧,我刷了最新的debian10固件,是不是就不能安装使用这个库了.
作者: jefferyzhang    时间: 2020-3-5 20:05
SodrSnne 发表于 2020-3-5 17:59
是啊,但是帖子前面提供的是rpm的安装包应该对应Fedora系统吧,我刷了最新的debian10固件,是不是就不能安装 ...

哦,好,我回头做一个单纯whl的
作者: SodrSnne    时间: 2020-3-6 09:57
jefferyzhang 发表于 2020-3-5 20:05
哦,好,我回头做一个单纯whl的

好,提前感谢你了,大概什么时候能更新
作者: icell    时间: 2020-3-12 21:30
对了大神,1路usb摄像头(1080)解码+1路编码(1080),帧率速度就比1路mipi摄像头(1080)+编码(1080)低很多,前者20帧,后者可到38帧。是因为编解码使用同一块vpu导致么?
作者: jefferyzhang    时间: 2020-3-13 08:38
icell 发表于 2020-3-12 21:30
对了大神,1路usb摄像头(1080)解码+1路编码(1080),帧率速度就比1路mipi摄像头(1080)+编码(1080)低很多 ...

先找到速度瓶颈,如果同样的编码,那就是usb速率问题。
你usb摄像头是2.0还是3.0的,算下图像大小和速率就知道了,如果是2.0,1080p根本到不了30fps的。
作者: yoyomai    时间: 2020-3-13 17:51
jefferyzhang 发表于 2020-3-5 20:05
哦,好,我回头做一个单纯whl的

同求,啥时候能出一个?
作者: SodrSnne    时间: 2020-3-16 09:57
楼主你好,这边有些急需python硬解,请问whl的包什么时间能发布
作者: jefferyzhang    时间: 2020-3-16 10:12
SodrSnne 发表于 2020-3-16 09:57
楼主你好,这边有些急需python硬解,请问whl的包什么时间能发布

嗯?这个包帖子里有写很清楚,这不是官方的包,只是社区爱好者写的,RK没有这个包的任何版权。同样其他客户有没有。如果商业用途请注意版权问题。

不建议用这个做项目,这只是个demo而已,bug很多很多,也不会有人维护,有需求的话请自己开发一个比较稳妥。

debian上的demo近期会更新,没有时间点,这都是业余开发的,我没权利去催人家发布一个非公的包,只能等开发者有空更新。

作者: 呱唧    时间: 2020-3-18 23:18
这个对应numpy的版本是多少?import toybrick的时候会报错“ImportError: numpy.core.multiarray failed to import”,搜了一下好像是因为numpy版本过高
作者: jefferyzhang    时间: 2020-3-19 08:17
呱唧 发表于 2020-3-18 23:18
这个对应numpy的版本是多少?import toybrick的时候会报错“ImportError: numpy.core.multiarray failed to ...

只要你用的是toybrick的系统,不会出现这问题吧,我们都测过了。
numpy没有限制版本,多高都可以。。
作者: SodrSnne    时间: 2020-3-19 13:26
新买的3399板子,烧了debian10系统。跑demo时候发现找不到so文件的错误
请问这个该如何解决,之前在fedro上面运行成功了的

作者: jefferyzhang    时间: 2020-3-19 14:11
SodrSnne 发表于 2020-3-19 13:26
新买的3399板子,烧了debian10系统。跑demo时候发现找不到so文件的错误
请问这个该如何解决,之前在fedro上 ...

你没仔细看这帖子么,我帖子里已经说了啊,要apt install两个东西啊
作者: yoyomai    时间: 2020-3-19 19:31
jefferyzhang 发表于 2020-3-19 14:11
你没仔细看这帖子么,我帖子里已经说了啊,要apt install两个东西啊

按帖子装上
sudo apt install rockchip-mpp
sudo apt install toybrick-gbm-dev
结果也是和上上楼一样
ImportError: libEGL.so: cannot open shared object file: No such file or directory
请问还需要装什么依赖库?


作者: jefferyzhang    时间: 2020-3-20 08:25
yoyomai 发表于 2020-3-19 19:31
按帖子装上
sudo apt install rockchip-mpp
sudo apt install toybrick-gbm-dev

请问你的开发版是什么?
作者: yoyomai    时间: 2020-3-20 10:27
jefferyzhang 发表于 2020-3-20 08:25
请问你的开发版是什么?

首先感谢大神,板子是RK3399PRO.装了相关依赖库,已经跑通了,就是会黑屏。
我用的海康4K网络摄像头。
不显示视频单纯解码6路1080P的网络摄像头视频流,已经满足需求。硬解给力!
作者: vincent911001    时间: 2020-3-23 14:55
jefferyzhang 发表于 2019-8-26 10:53
快速开发包简介:

1. 收集和提供常用input/output接口抽象(目前版本input仅有rtsp client,output仅有 ...

Hi,

Can you upload the package to OneDrive because I cant register for an account due to not having a China Telco Number.


Thanks
作者: vincent911001    时间: 2020-3-24 10:20
本帖最后由 vincent911001 于 2020-3-24 10:23 编辑
jefferyzhang 发表于 2019-8-26 10:53
快速开发包简介:

1. 收集和提供常用input/output接口抽象(目前版本input仅有rtsp client,output仅有 ...

I have already installed python3-toybrick through the downloaded python3-toybrick-0.2-12.aarch64.rpm and have also copied the /include and /lib64 which contains librockx.so from RockX_SDK_V1.2.0_20200302

However, when I try:
  1. import toybrick as toy
复制代码


I get the following error:
  1. [toybrick@toybrick ~]$ python3
  2. Python 3.6.8 (default, Mar 21 2019, 09:31:25)
  3. [GCC 8.3.1 20190223 (Red Hat 8.3.1-2)] on linux
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> import toybrick as toy
  6. Traceback (most recent call last):
  7.   File "<stdin>", line 1, in <module>
  8.   File "/usr/local/lib/python3.6/site-packages/toybrick/__init__.py", line 35, in <module>
  9.     from toybrick.rockx import createRockx, RockxType, Rockx
  10.   File "/usr/local/lib/python3.6/site-packages/toybrick/rockx.py", line 1, in <module>
  11.     from . import rkrockx
  12. ImportError: libobject_detection.so: cannot open shared object file: No such file or directory
复制代码


Please help. Thanks.
作者: jefferyzhang    时间: 2020-3-24 10:26
vincent911001 发表于 2020-3-24 10:20
I have already installed python3-toybrick through the downloaded
and have also copied the /include ...

You can comment this line out for working around it.
There is a new release of rockx python edition, so this package is useless anymore.
作者: vincent911001    时间: 2020-3-24 11:19
本帖最后由 vincent911001 于 2020-3-24 11:22 编辑
jefferyzhang 发表于 2020-3-24 10:26
You can comment this line out for working around it.
There is a new release of rockx python editio ...

If i comment out
  1. import toybrick as toy
复制代码


How can I access use your rtsp code example?

BTW, where can i get the newer version of python3-toybrick


作者: lll138139    时间: 2020-3-24 11:27
jefferyzhang 发表于 2019-12-27 09:01
从这信息看,只有两种可能:
1. 你用的是非常早期的固件,不支持这个接口,这种情况下你只要烧写toybrick ...

你好,版主,我用的是toybrick的3399pro的板子,刷的是最新的debian10固件,同样还是出现这个问题,该怎么解决呢
作者: jefferyzhang    时间: 2020-3-24 11:52
vincent911001 发表于 2020-3-24 11:19
If i comment out

File "/usr/local/lib/python3.6/site-packages/toybrick/rockx.py", line 1, in <module>
    from . import rkrockx

I means comment out this line

This is not an official project, so we don't have more time to do it better.
作者: jefferyzhang    时间: 2020-3-24 11:54
lll138139 发表于 2020-3-24 11:27
你好,版主,我用的是toybrick的3399pro的板子,刷的是最新的debian10固件,同样还是出现这个问题,该怎 ...

报的错发一下。首页帖子有专门debian10的whl包,按那个步骤装了么
作者: vincent911001    时间: 2020-3-24 11:55
jefferyzhang 发表于 2020-3-24 11:52
File "/usr/local/lib/python3.6/site-packages/toybrick/rockx.py", line 1, in
    from . import rk ...

Ok, noted. Thanks.
Understood
作者: lll138139    时间: 2020-3-24 12:04
jefferyzhang 发表于 2020-3-24 11:54
报的错发一下。首页帖子有专门debian10的whl包,按那个步骤装了么

是按照那个步骤装的,依赖项也都装了

作者: vincent911001    时间: 2020-3-24 15:58
jefferyzhang 发表于 2020-3-24 11:52
File "/usr/local/lib/python3.6/site-packages/toybrick/rockx.py", line 1, in
    from . import rk ...

Hi Jeffery,

I did modify your sample code to run only single stream of video for testing. However, I get the error like below:
  1. [03/24 03:48:53.462] D/: drm display open ...
  2. [03/24 03:48:53.462] D/: Found display connectors: (encoders: 1)
  3. [03/24 03:48:53.672] D/: #[0] id: 91, type :HDMIA        (CONNECTED)
  4. [03/24 03:48:53.672] D/:          + [0] 1920x1080 : 1920x1080
  5. [03/24 03:48:53.672] D/:          + [1] 1920x1080 : 1920x1080
  6. [03/24 03:48:53.672] D/:          + [2] 1920x1080 : 1920x1080
  7. [03/24 03:48:53.672] D/:          + [3] 1680x1050 : 1680x1050
  8. [03/24 03:48:53.672] D/:          + [4] 1600x900 : 1600x900
  9. [03/24 03:48:53.672] D/:          + [5] 1280x1024 : 1280x1024
  10. [03/24 03:48:53.672] D/:          + [6] 1440x900 : 1440x900
  11. [03/24 03:48:53.672] D/:          + [7] 1280x720 : 1280x720
  12. [03/24 03:48:53.672] D/:          + [8] 1280x720 : 1280x720
  13. [03/24 03:48:53.672] D/:          + [9] 1280x720 : 1280x720
  14. [03/24 03:48:53.672] D/:          + [10] 1024x768 : 1024x768
  15. [03/24 03:48:53.672] D/:          + [11] 800x600 : 800x600
  16. [03/24 03:48:53.672] D/:          + [12] 720x576 : 720x576
  17. [03/24 03:48:53.672] D/:          + [13] 720x480 : 720x480
  18. [03/24 03:48:53.672] D/:          + [14] 720x480 : 720x480
  19. [03/24 03:48:53.672] D/:          + [15] 640x480 : 640x480
  20. [03/24 03:48:53.672] D/:          + [16] 640x480 : 640x480
  21. [03/24 03:48:53.672] D/:          + [17] 720x400 : 720x400
  22. [03/24 03:48:53.672] D/: End of Found
  23. [03/24 03:48:53.883] D/: connecting to [0] mode [0] 1920x1088
  24. [03/24 03:48:53.883] D/: found encoder id: 90
  25. [03/24 03:48:53.883] D/: use crtc 0 as default
  26. [03/24 03:48:53.886] D/: set crts : crtc_id: 64
  27. [03/24 03:48:53.886] D/: set crtc : encoder crtc_id: 64
  28. [03/24 03:48:53.897] D/: [0]insert display buffer : 0x558b09bb20
  29. [03/24 03:48:53.899] D/: set crts : crtc_id: 64
  30. [03/24 03:48:53.899] D/: set crtc : encoder crtc_id: 64
  31. [03/24 03:48:53.914] D/: [1]insert display buffer : 0x558b097eb0
  32. [03/24 03:48:53.914] D/: OpenGLES initializing ...
  33. [03/24 03:48:53.932] D/: * EGL_VERSION = 1.4 Midgard-"r13p0-00rel0" (have 22 configs)
  34. [03/24 03:48:53.932] D/: getEglSurface 154 gbmSurface=0x7f7c05b3f0

  35. [03/24 03:48:53.949] D/: changeEglSurface 169 gbmSurface=0x7f7c19fe40

  36. [03/24 03:48:53.986] D/: drm render open ...
  37. [03/24 03:48:54.036] D/:  mMppCtx null or no init...
  38. [03/24 03:48:54.036] D/: listening rtp port 40393
  39. [03/24 03:48:54.037] D/: listening rtcp port 40394
  40. [03/24 03:48:54.038] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  41. [03/24 03:48:54.205] D/: # Found [0] media: video
  42. [03/24 03:48:54.205] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  43. [03/24 03:48:54.205] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=38
  44. [03/24 03:48:54.205] D/: # Total found 1 channel(s).
  45. [03/24 03:48:54.205] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=38 , format=1
  46. [03/24 03:48:54.205] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=38
  47. [03/24 03:48:54.272] D/: drm render open ...
  48. [03/24 03:49:05.050] D/: close curl (rtsp://192.168.0.128:5000/stream)
  49. [03/24 03:49:05.274] D/: [0x7f64003230]destroying curl rtsp ...
  50. [03/24 03:49:05.275] D/: [0x7f64003230]destroying curl rtsp ... done
  51. [03/24 03:49:05.275] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  52. [03/24 03:49:05.275] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  53. [03/24 03:49:05.441] D/: # Found [0] media: video
  54. [03/24 03:49:05.442] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  55. [03/24 03:49:05.442] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=38
  56. [03/24 03:49:05.442] D/: # Total found 1 channel(s).
  57. [03/24 03:49:05.442] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=38 , format=1
  58. [03/24 03:49:05.442] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=38
  59. [03/24 03:49:16.520] D/: close curl (rtsp://192.168.0.128:5000/stream)
  60. [03/24 03:49:17.513] D/: [0x7f64003230]destroying curl rtsp ...
  61. [03/24 03:49:17.513] D/: [0x7f64003230]destroying curl rtsp ... done
  62. [03/24 03:49:17.514] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  63. [03/24 03:49:17.514] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  64. [03/24 03:49:17.914] D/: # Found [0] media: video
  65. [03/24 03:49:17.914] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  66. [03/24 03:49:17.914] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=39
  67. [03/24 03:49:17.915] D/: # Total found 1 channel(s).
  68. [03/24 03:49:17.915] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=39 , format=1
  69. [03/24 03:49:17.915] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=39
  70. [03/24 03:49:28.991] D/: close curl (rtsp://192.168.0.128:5000/stream)
  71. [03/24 03:49:29.985] D/: [0x7f64003230]destroying curl rtsp ...
  72. [03/24 03:49:29.987] D/: [0x7f64003230]destroying curl rtsp ... done
  73. [03/24 03:49:29.987] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  74. [03/24 03:49:29.987] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  75. [03/24 03:49:30.399] D/: # Found [0] media: video
  76. [03/24 03:49:30.399] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  77. [03/24 03:49:30.399] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=39
  78. [03/24 03:49:30.399] D/: # Total found 1 channel(s).
  79. [03/24 03:49:30.400] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=39 , format=1
  80. [03/24 03:49:30.400] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=39
  81. [03/24 03:49:41.478] D/: close curl (rtsp://192.168.0.128:5000/stream)
  82. [03/24 03:49:42.469] D/: [0x7f64003230]destroying curl rtsp ...
  83. [03/24 03:49:42.470] D/: [0x7f64003230]destroying curl rtsp ... done
  84. [03/24 03:49:42.470] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  85. [03/24 03:49:42.470] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  86. [03/24 03:49:42.811] D/: # Found [0] media: video
  87. [03/24 03:49:42.811] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  88. [03/24 03:49:42.811] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=39
  89. [03/24 03:49:42.811] D/: # Total found 1 channel(s).
  90. [03/24 03:49:42.811] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=39 , format=1
  91. [03/24 03:49:42.811] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=39
  92. [03/24 03:49:53.889] D/: close curl (rtsp://192.168.0.128:5000/stream)
  93. [03/24 03:49:54.882] D/: [0x7f64003230]destroying curl rtsp ...
  94. [03/24 03:49:54.883] D/: [0x7f64003230]destroying curl rtsp ... done
  95. [03/24 03:49:54.883] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  96. [03/24 03:49:54.883] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  97. [03/24 03:49:55.189] D/: # Found [0] media: video
  98. [03/24 03:49:55.189] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  99. [03/24 03:49:55.192] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=39
  100. [03/24 03:49:55.192] D/: # Total found 1 channel(s).
  101. [03/24 03:49:55.192] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=39 , format=1
  102. [03/24 03:49:55.193] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=39
  103. [03/24 03:50:06.363] D/: close curl (rtsp://192.168.0.128:5000/stream)
  104. [03/24 03:50:07.354] D/: [0x7f64003230]destroying curl rtsp ...
  105. [03/24 03:50:07.355] D/: [0x7f64003230]destroying curl rtsp ... done
  106. [03/24 03:50:07.355] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  107. [03/24 03:50:07.355] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  108. [03/24 03:50:09.101] D/: # Found [0] media: video
  109. [03/24 03:50:09.101] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  110. [03/24 03:50:09.101] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=39
  111. [03/24 03:50:09.101] D/: # Total found 1 channel(s).
  112. [03/24 03:50:09.102] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=39 , format=1
  113. [03/24 03:50:09.102] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=39
  114. [03/24 03:50:20.182] D/: close curl (rtsp://192.168.0.128:5000/stream)
  115. [03/24 03:50:21.171] D/: [0x7f64003230]destroying curl rtsp ...
  116. [03/24 03:50:21.172] D/: [0x7f64003230]destroying curl rtsp ... done
  117. [03/24 03:50:21.172] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  118. [03/24 03:50:21.172] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  119. [03/24 03:50:21.590] D/: # Found [0] media: video
  120. [03/24 03:50:21.591] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  121. [03/24 03:50:21.591] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=39
  122. [03/24 03:50:21.591] D/: # Total found 1 channel(s).
  123. [03/24 03:50:21.591] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=39 , format=1
  124. [03/24 03:50:21.592] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=39
  125. [03/24 03:50:32.766] D/: close curl (rtsp://192.168.0.128:5000/stream)
  126. [03/24 03:50:33.757] D/: [0x7f64003230]destroying curl rtsp ...
  127. [03/24 03:50:33.758] D/: [0x7f64003230]destroying curl rtsp ... done
  128. [03/24 03:50:33.758] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  129. [03/24 03:50:33.758] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  130. [03/24 03:50:34.350] D/: # Found [0] media: video
  131. [03/24 03:50:34.350] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  132. [03/24 03:50:34.351] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=39
  133. [03/24 03:50:34.351] D/: # Total found 1 channel(s).
  134. [03/24 03:50:34.351] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=39 , format=1
  135. [03/24 03:50:34.351] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=39
  136. [03/24 03:50:45.429] D/: close curl (rtsp://192.168.0.128:5000/stream)
  137. [03/24 03:50:46.420] D/: [0x7f64003230]destroying curl rtsp ...
  138. [03/24 03:50:46.421] D/: [0x7f64003230]destroying curl rtsp ... done
  139. [03/24 03:50:46.421] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  140. [03/24 03:50:46.421] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  141. [03/24 03:50:46.863] D/: # Found [0] media: video
  142. [03/24 03:50:46.863] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  143. [03/24 03:50:46.863] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=39
  144. [03/24 03:50:46.863] D/: # Total found 1 channel(s).
  145. [03/24 03:50:46.863] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=39 , format=1
  146. [03/24 03:50:46.863] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=39
  147. [03/24 03:50:57.941] D/: close curl (rtsp://192.168.0.128:5000/stream)
  148. [03/24 03:50:58.932] D/: [0x7f64003230]destroying curl rtsp ...
  149. [03/24 03:50:58.933] D/: [0x7f64003230]destroying curl rtsp ... done
  150. [03/24 03:50:58.933] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  151. [03/24 03:50:58.933] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  152. [03/24 03:50:59.252] D/: # Found [0] media: video
  153. [03/24 03:50:59.253] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  154. [03/24 03:50:59.253] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=39
  155. [03/24 03:50:59.253] D/: # Total found 1 channel(s).
  156. [03/24 03:50:59.254] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=39 , format=1
  157. [03/24 03:50:59.254] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=39
  158. [03/24 03:51:10.333] D/: close curl (rtsp://192.168.0.128:5000/stream)
  159. [03/24 03:51:11.324] D/: [0x7f64003230]destroying curl rtsp ...
  160. [03/24 03:51:11.325] D/: [0x7f64003230]destroying curl rtsp ... done
  161. [03/24 03:51:11.325] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  162. [03/24 03:51:11.325] D/: curlto rtsp://192.168.0.128:5000/stream , cli 40393:40403, tcp: 0
  163. [03/24 03:51:11.813] D/: # Found [0] media: video
  164. [03/24 03:51:11.813] D/: # Found [0] rtpmap: id:96 format:H264 bitrate:90000
  165. [03/24 03:51:11.814] D/: # Found [0] control: rtsp://192.168.0.128:5000/stream/trackID=39
  166. [03/24 03:51:11.814] D/: # Total found 1 channel(s).
  167. [03/24 03:51:11.814] D/: TRACK [0] : rtsp://192.168.0.128:5000/stream/trackID=39 , format=1
  168. [03/24 03:51:11.814] D/: setup 40393 , 40394, uri: rtsp://192.168.0.128:5000/stream/trackID=39
  169. [03/24 03:51:22.891] D/: close curl (rtsp://192.168.0.128:5000/stream)
  170. [03/24 03:51:23.885] D/: [0x7f64003230]destroying curl rtsp ...
  171. [03/24 03:51:23.885] D/: [0x7f64003230]destroying curl rtsp ... done
  172. [03/24 03:51:23.885] D/: ReEnable rtsp client [1] rtsp://192.168.0.128:5000/stream
  173. [03/24 03:51:23.886] D/: curlto rtsp://192.168.0.128:5000/stre
复制代码


Can I know is there anything that I installed wrongly?
作者: jefferyzhang    时间: 2020-3-24 16:16
vincent911001 发表于 2020-3-24 15:58
Hi Jeffery,

I did modify your sample code to run only single stream of video for testing. However ...

It looks fine, but rtsp protocal handshaking failed (maybe it is a bug).
You can try to use another rtsp server (or rtsp cam).
It is just a sample here, I can't promise match all rtsp services
作者: vincent911001    时间: 2020-3-24 16:27
jefferyzhang 发表于 2020-3-24 16:16
It looks fine, but rtsp protocal handshaking failed (maybe it is a bug).
You can try to use anothe ...

I actually used VLC on my laptop to create the stream with offline video file
So, i dont really understand when you told me to use another server?
作者: jefferyzhang    时间: 2020-3-24 16:39
vincent911001 发表于 2020-3-24 16:27
I actually used VLC on my laptop to create the stream with offline video file
So, i dont really un ...


Because this whl is a sample only, there are many bugs in rtsp client.
作者: vincent911001    时间: 2020-3-24 17:05
jefferyzhang 发表于 2020-3-24 16:39
Because this whl is a sample only, there are many bugs in rtsp client.

Understood. Thanks for your help.
作者: stefan    时间: 2020-3-27 11:28
Debian安装, toybrick-mali.sh在哪?没找到
作者: stefan    时间: 2020-3-27 11:43
yoyomai 发表于 2020-3-20 10:27
首先感谢大神,板子是RK3399PRO.装了相关依赖库,已经跑通了,就是会黑屏。
我用的海康4K网络摄像头。
不 ...

Hi, 你好,请问Debian 上libEGL.so缺失是怎么解决的? 我有同样的问题,谢谢!
作者: kyeteo    时间: 2020-4-9 11:35
示例的时候出现这个的原因是什么呀,(DrmBuffer in rk_drm.cpp:308): failed to open drm buffer !
作者: jefferyzhang    时间: 2020-4-9 11:52
kyeteo 发表于 2020-4-9 11:35
示例的时候出现这个的原因是什么呀,(DrmBuffer in rk_drm.cpp:308): failed to open drm buffer ! ...

你上位机用的不是rk板子肯定不能用我们drm的。。。
建议你购买我们Toybrick的板子来做。
作者: kyeteo    时间: 2020-4-9 12:17
jefferyzhang 发表于 2020-4-9 11:52
你上位机用的不是rk板子肯定不能用我们drm的。。。
建议你购买我们Toybrick的板子来做。 ...

我用的的是rk3399pro呢
toybrick@debian10:~/gstreamer-rockchip-master$





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