Toybrick

楼主: jefferyzhang

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

 

盗骊_l

注册会员

积分
66
发表于 2019-7-16 17:29:48 | 显示全部楼层
我在Android上编译了mpp,demo程序也能正常跑。我自己写了个程序按照demo的使用方式,也能正常解码,但是发现解码出数据是不均匀的,不是传一帧,解码出一帧数据。有的时候,传十几帧,然后才连续出十几帧的数据。请问这是什么情况?过程当中还会遇到很多
  1. decoder_get_frame get err info:1 discard:0
复制代码
这个错误,有是什么情况?
回复

使用道具 举报

jefferyzhang

版主

积分
13414
 楼主| 发表于 2019-7-18 10:06:04 | 显示全部楼层
盗骊_l 发表于 2019-7-16 17:29
我在Android上编译了mpp,demo程序也能正常跑。我自己写了个程序按照demo的使用方式,也能正常解码,但是发 ...

可能原因:
1. I帧不完整,丢失,造成后面P帧无法解码
2. 码流带有B帧
3. 不管怎么样都不可能一帧进一帧出,除非你码流全是I帧

你发的错误看不出什么问题,拿不到帧很多情况是帧不完整无法解码造成的
回复

使用道具 举报

zhouzhouzlove

高级会员

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

使用道具 举报

jefferyzhang

版主

积分
13414
 楼主| 发表于 2019-8-20 10:58:31 | 显示全部楼层
zhouzhouzlove 发表于 2019-8-20 09:18
楼主大神,我在板子上安装了瑞芯微官网的ffmpeg,并且跑了个存储rtsp到本地的例子。但是我怎么知道是用的硬 ...

最简单看CPU占用率就知道了,ARM的cpu做264软件速度很慢的,甚至大一点的视频码率是无法达到30fps的
回复

使用道具 举报

zhouzhouzlove

高级会员

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

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

使用道具 举报

zhouzhouzlove

高级会员

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

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

使用道具 举报

zhouzhouzlove

高级会员

积分
592
发表于 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的,都需要打开哪些支持
回复

使用道具 举报

jefferyzhang

版主

积分
13414
 楼主| 发表于 2019-8-20 15:41:45 | 显示全部楼层
zhouzhouzlove 发表于 2019-8-20 14:54
ffmpeg的编译安装是这样的,大神看下是否有问题,三部曲如下:
./configure --enable-shared --prefix=/op ...

是的,ffmpeg软解会有较高的CPU占用率,当然你码率要不高,就320p的264,那区别不大。
走VPU解码CPU是几乎不会有占用率的。
回复

使用道具 举报

zhouzhouzlove

高级会员

积分
592
发表于 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
回复

使用道具 举报

jefferyzhang

版主

积分
13414
 楼主| 发表于 2019-8-21 09:09:50 | 显示全部楼层
zhouzhouzlove 发表于 2019-8-20 16:20
首先多谢大神的耐心回复!

--enable-rkmpp           enable Rockchip Media Process Platform code [n ...

这个我真不知道- -# 因为这个库是另外一个部门维护的,你们可以直接在github上的issues里问他们问题。
我们部门跟你们一样也只是用了这个库而已。。。
回复

使用道具 举报

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

本版积分规则

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


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