Toybrick

RK3399Pro入门教程(6)硬件编解码器MPP库的使用

 

zhouzhouzlove

高级会员

积分
550
楼主
发表于 2019-8-20 09:18:23 | 显示全部楼层
楼主大神,我在板子上安装了瑞芯微官网的ffmpeg,并且跑了个存储rtsp到本地的例子。但是我怎么知道是用的硬解码?咋说呢,我怎么验证。。。。。。。。
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
550
沙发
发表于 2019-8-20 11:06:20 | 显示全部楼层
jefferyzhang 发表于 2019-8-20 10:58
最简单看CPU占用率就知道了,ARM的cpu做264软件速度很慢的,甚至大一点的视频码率是无法达到30fps的 ...

是不是还可以这样:
从ffmpeg官网下载一个,编译安装这个库。
然后在编译自己的程序时,链接这个新的库,那么理论上来讲,这两个例子在跑时cpu占用率会有明显的差距?
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
550
板凳
发表于 2019-8-20 11:44:49 | 显示全部楼层
zhouzhouzlove 发表于 2019-8-20 11:06
是不是还可以这样:
从ffmpeg官网下载一个,编译安装这个库。
然后在编译自己的程序时,链接这个新的库, ...

实验结果表明,这样做没有区别,使用top查看cpu占用率,都在2-3%。
有没有对比比较明显的例子。。。。。
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
550
地板
发表于 2019-8-20 14:54:42 | 显示全部楼层
本帖最后由 zhouzhouzlove 于 2019-8-20 15:32 编辑
jefferyzhang 发表于 2019-8-20 10:58
最简单看CPU占用率就知道了,ARM的cpu做264软件速度很慢的,甚至大一点的视频码率是无法达到30fps的 ...

ffmpeg的编译安装是这样的,大神看下是否有问题,三部曲如下:
./configure --enable-shared --prefix=/opt/ffmpeg

make

make install
在安装完后,修改/etc/ld.so.conf添加安装目录/opt/ffmpeg/lib,sudo ldconfig 后使用如下的命令编译:
g++ -Wall -fexceptions -std=c++11 -g -I"/opt/ffmpeg/include" -c ./save-rtsp.cpp -o ./save-rtsp.o

g++  -o save-rtsp ./save-rtsp.o   /opt/ffmpeg/lib/libavcodec.so /opt/ffmpeg/lib/libavdevice.so /opt/ffmpeg/lib/libavfilter.so /opt/ffmpeg/lib/libavformat.so /opt/ffmpeg/lib/libavutil.so /opt/ffmpeg/lib/libswresample.so /opt/ffmpeg/lib/libswscale.so

生成了可执行程序save-rtsp。同样的,从ffmpeg官网下载了一ffmpeg,安装在另一个目录,编译时修改系统环境变量和链接命令,同样生成了可执行文件。

但是这两个可执行文件执行时,cpu的占用率没有差别,都是2%左右。
讲道理的话,是不是ffmpeg官网的版本会有较高的cpu占用率。。。。

  --enable-rkmpp           enable Rockchip Media Process Platform code [no]
是不是应该在配置时打开这个选项?或者说,有没有官方的指导,关于怎么配置ffmpeg或者mpp的,都需要打开哪些支持
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
550
5#
发表于 2019-8-20 16:20:49 | 显示全部楼层
jefferyzhang 发表于 2019-8-20 15:41
是的,ffmpeg软解会有较高的CPU占用率,当然你码率要不高,就320p的264,那区别不大。
走VPU解码CPU是几 ...

首先多谢大神的耐心回复!

--enable-rkmpp           enable Rockchip Media Process Platform code [no]
是不是应该在配置时打开这个选项?我没打开,当添加这个选项时,配置报错会说:rkmpp is version3 and --enable-version3 is not specified.
当加上--enable-version3后会报错,pkg-config未安装。




我不知道需不需要额外的打开一些开关,还是说,直接指定编译为共享库就行了。就像之前提到的这样,/configure --enable-shared --prefix=/opt/ffmpeg
另外,问个白痴的问题,安装了ffmpeg之后是否还需要安装mpp?现在是未安装mpp,只安装了ffmpeg。。。。。。。。。。。

本帖子中包含更多资源

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

x
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
550
6#
发表于 2019-8-21 09:37:31 | 显示全部楼层
jefferyzhang 发表于 2019-8-21 09:09
这个我真不知道- -# 因为这个库是另外一个部门维护的,你们可以直接在github上的issues里问他们问题。
我 ...

好的,收到!
多谢大神的耐心解答~
么么哒
                     ——抠脚大汉
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
550
7#
发表于 2019-8-21 17:21:25 | 显示全部楼层
kiwi 发表于 2019-8-21 10:23
你这个想法,我之前做过同样的事情,编译ffmpeg打开--enable-rkmpp需要先编译安装mpp,然后配置好mpp的pk ...

然后配置好mpp的pkgconfig
少侠,这句话可以具体一点么?
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
550
8#
发表于 2019-8-23 10:27:52 | 显示全部楼层
kiwi 发表于 2019-8-22 16:04
就是配置其lib下的pkgconfig目录下的pc文件

多谢少侠的回复!
我做了个实验:
1、只安装ffmpeg官网的ffmpeg4.0版本,用自己的程序去测试(解码rtsp流),发现可以软解;
2、只安装瑞芯微的ffmpeg4.0版本,提示无法找到解码器,打开流失败;
3、安装了mpp,同样提示无法找到解码器,打开流失败。
结论如下:我不知道怎么配置ffmpeg和mpp,才能使得ffmpeg可以调用到VPU。
希望官方能够给出一个教程,否则只说怎么调用API,但是如果不会配置安装的话,这都是没用的。

强烈建议楼主给出相关部门人员的帖子链接或者联系方式,以便留言询问,自github上提了问题,但是感觉应该没人看。



报错截图如下:27是codec_id,在3。3的版本下是28,但是4.0以上就是27了,不知道为什么,但是应该不打紧。


本帖子中包含更多资源

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

x
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
550
9#
发表于 2019-8-23 14:13:21 | 显示全部楼层
kiwi 发表于 2019-8-23 14:10
建议别捣鼓ffmpeg了,他们也只是对接了api,据说是有bug的,也不会提供ffmpeg的支持,用mpp是最好的,官 ...

我现在在看mpp开发手册,感觉需要例子,也正在网上找,大神有没有小例子,我想这样可能会快点,随便硬解码的编解码例子都行,我看下流程和各个api的使用。
当然,工作中的内容涉及保密的话,就算了。。。。
还是希望能够得到你的帮助,,,,,
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
550
10#
发表于 2019-8-23 14:40:58 | 显示全部楼层
kiwi 发表于 2019-8-23 14:16
https://github.com/rockchip-linux/mpp
里面有相应的例子,结合mpp开发文档,容易理解 ...

好的,多谢~
么么哒~~~~~
回复

使用道具 举报

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

本版积分规则

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


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