首先说一下我的环境:
固件是Firefly-RK3399_xubuntu1604_201711301130.img
然后在github上下载rockchip_mpp,并编译安装到/usr。
例子代码在https://github.com/darkise/mpp_rtsp_player,目前进度是程序可运行,硬解码没有问题,但是显示却出现大问题,显示过程的FPS一直都是25以下,而解码的FPS是超过25——我的测试的视频源的FPS就是25,因此我只能丢帧,初步测试4万帧丢帧就达到6000帧。求帮忙!
另:如果我不使用多线程显示过程的FPS会更低,甚至15都不到。
顶一下啊
rockchip_mpp编译不需要什么特殊处理吧?
mpp_rtsp_player里makefile的-I../../mpp_rtsp,哪里来的?
还有这个错误,yuvdisplay.c:8:23: fatal error: X11/Xlib.h: No such file or directory
楼主,问一下,您是怎么解决的
一只大犀牛 发表于 2018-4-11 11:03
rockchip_mpp编译不需要什么特殊处理吧?
mpp_rtsp_player里makefile的-I../../mpp_rtsp,哪里来的?
还 …
首先谢谢你的回复。-I../../mpp_rtsp其实就是代码当前路径,之前编译是在该目录下建立了一个build目录来编译的,后来删除了直接在代码目录下编译,忘了改Makefile,你吧-I../../mpp_rtsp改为-I.就好了
X11/Xlib.h是X11开发库带的,请参考
A quick search using...
apt search Xlib.h
Turns up the package libx11-dev but you shouldn't need this for pure OpenGL programming. What tutorial are you using?
You can add Xlib.h to your system by running the following...
sudo apt install libx11-dev
一只大犀牛 发表于 2018-4-11 11:03
rockchip_mpp编译不需要什么特殊处理吧?
mpp_rtsp_player里makefile的-I../../mpp_rtsp,哪里来的?
还 …
另外:我安装rockchip_mpp前,安装了libdrm-rockchip的。这个也是在github上可以找到。
编译安装时我只额外设定了安装路径(其默认路径是/usr/local,我改为/usr),别的都是使用默认值。
gcc -c -pipe -O2 -Wall -W -fPIC -DDEBUG=1 -I. -I/usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++ -o main.o main.c
In file included from main.c:7:0:
mppdecoder.h:6:30: fatal error: rockchip/rk_type.h: No such file or directory
compilation terminated.
Makefile:121: recipe for target ‘main.o’ failed
make: *** [main.o] Error 1
这个是什么情况,有没有使用教程
darkise 发表于 2018-4-11 12:04
另外:我安装rockchip_mpp前,安装了libdrm-rockchip的。这个也是在github上可以找到。
编译安装时我只 …
多谢解答。在麻烦问一下,我之前的mpp的so是装在/usr/local上的,在Makefile加了路径-L/usr/local/lib也不行,非得把mpp的so拷到/esr/lib下面,这是什么原因?
另外,您的rtsp地址怎么没有用户名密码?怎么添加用户名密码呢?
关于ubuntu硬件编解码,也希望firefly能给出解答。
一只大犀牛 发表于 2018-4-11 15:31
多谢解答。在麻烦问一下,我之前的mpp的so是装在/usr/local上的,在Makefile加了路径-L/usr/local/lib也 …
RTSP协议是我自己实现的,都在代码里,还没有加入认证功能,等有空了我会加的,至少这两个月内都不可能有空了。
关于目录问题,应该是要设置LD_LIBRARY_PATH的环境变量吧,就是因为各种麻烦,我才把它装到/usr/lib下的。
薛定谔的猫 发表于 2018-4-11 14:04
gcc -c -pipe -O2 -Wall -W -fPIC -DDEBUG=1 -I. -I/usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++ -o …
需要安装rockchip_mpp库,这个是rockchip提供的,在github上可以下载源代码,建议在安装mpp库前,先安装libdrm-rockchip,这个也是rockchip提供的在github有源代码。
mpp是rockchip包装的解码库接口,drm是一个内存管理库。
学习了
darkise 发表于 2018-4-11 17:45
RTSP协议是我自己实现的,都在代码里,还没有加入认证功能,等有空了我会加的,至少这两个月内都不可能有 …
我现在没装drm,可以使用test下面的demo,mpi_enc_test和mpi_dec_test都没问题,但是vpu那个就不行,提示没找到vpu库。
ps:你这个显示,最近逛论坛发现一篇帖子说显示用的x11不太好,你看看你的是不是这个原因。
http://bbs.t-firefly.com/forum.php?mod=viewthread&tid=1876&extra=page%3D1
一只大犀牛 发表于 2018-4-12 23:18
我现在没装drm,可以使用test下面的demo,mpi_enc_test和mpi_dec_test都没问题,但是vpu那个就不行,提示 …
vpu我也找了很久,只找到了32位的so,没有源代码,如果你想用就得给3399编译一个32位的环境了,个人不建议。
显示应该不是X11的问题,我加了一些测试信息,使用opengl刷新一个帧实际上耗时从来没有超过30ms的,一般都是25ms以下,安装这个速度应该是可以达到40fps的,更奇怪的是我在显示的主线程中加了一下打印输出fps倒是变好了,所以个人认为应该是系统线程调度问题。
darkise 发表于 2018-4-13 09:29
vpu我也找了很久,只找到了32位的so,没有源代码,如果你想用就得给3399编译一个32位的环境了,个人不建 …
编译mpp是会编译出来rockchip_vpu的so文件的,难道不是用那个?
你这个加打印变好的现象很奇怪,像是帧率没控制好的感觉。
一只大犀牛 发表于 2018-4-13 10:59
编译mpp是会编译出来rockchip_vpu的so文件的,难道不是用那个?
你这个加打印变好的现象很奇怪,像是帧 …
我用的这个例子https://github.com/WainDing/mpp_linux_cpp
解码显示1080P可以达到47帧:decode frames 240 using 5074.27ms frm rate:47.30.
就是解码显示完了,我的显示屏就提示没信号了。HDMI先需要重新插拔一下,才能正常显示。
你可以看看。
一只大犀牛 发表于 2018-4-13 14:30
我用的这个例子https://github.com/WainDing/mpp_linux_cpp
解码显示1080P可以达到47帧:decode frames …
感谢分享!
rockchip_mpp编译出来的那个rockchip_vpu实际上是使用dlopen的主,我提到的32位的库就是dlopen的对象,那个没用。
我把代码改了,使用pthread_cond_wait/pthread_cond_signal就可以了,就是线程调度问题,单纯使用while(1)消耗太大反而得不到及时响应。修改后代码还没来得及整理上传,只能等周末了,到时随便再看看你提到的那份代码。
darkise 发表于 2018-4-17 15:53
感谢分享!
rockchip_mpp编译出来的那个rockchip_vpu实际上是使用dlopen的主,我提到的32位的库就是dlop …
最近新出一个0416版固件,自带gstreamer的硬件编解码支持。你也可以看看,效果不错。
darkise 发表于 2018-4-11 17:45
RTSP协议是我自己实现的,都在代码里,还没有加入认证功能,等有空了我会加的,至少这两个月内都不可能有 …
请问认证功能加了么