Firefly-rk3288 linux下 实现视频硬解码(公开源码)

本帖最后由 isle 于 2015-12-29 16:38 编辑

firefly-rk3288 linux上H264、H265解码一直都是软解,下面将介绍如何基于ffmpeg,在ubuntu系统上添加硬解支持,
首先安装硬解驱动库。这里使用的是国外友人mac_l1的libhybris库。
当然也可以使用rockchip自己发布的解码库,这个网上有,大家可以自己去找找。本源码是使用hybris库的,如果使用其他库,需要修改调用方式。
为了方便,我在百度网盘上备份了一个mac的hybris库,大家可以直接下载。
http://pan.baidu.com/s/1pKdqUQR

安装驱动库:

sudo dpkg  -i machybris-0.1.0_armhf.deb

如果提示错误请先执行:

sudo apt-get -f install

再执行安装,安装完解码库驱动后需要重启下。

安装ffplay依赖库sdl :

sudo apt-get install libsdl-dev

在开发板上安装编译环境:

sudo apt-get install build-essential

下载基于ffmpeg的视频解码源码:

git clone https://github.com/isle0118/firefly-vpu-linux.git

编译安装:

./configure  --enable-shared --prefix=/usr --disable-ffmpeg --disable-ffprobe --disable-ffserver  --disable-static
make && sudo make install

成功之后就可以用ffplay测试了。可以与系统自带的mplayer对比效果及cpu占用率等。确实有很大的改善哦!

硬解的源文件 :libavcodec/rkdec_decoder.c 大家可以自行研究及优化。

高手

顶!狂顶!ANDROID下的解码已经快吧我搞疯掉了!
不知道这个支不支持隔行和4K!

android下的硬件编解码呢?

版主:编译报错啊!缺少头文件!
CC libavcodec/resample2.o
CC libavcodec/rkdec_decoder.o
libavcodec/rkdec_decoder.c:2:52: fatal error: /usr/local/include/hybris/common/dlfcn.h: No such file or directory
#include “/usr/local/include/hybris/common/dlfcn.h”

lam007 发表于 2015-12-29 20:19
android下的硬件编解码呢?

安卓下的已经集成到OMX层了!
直接调用OMX就可以了!

要在开发板上编译???
缺少的头文件,在驱动库里面吗?

上面使用的方式是在开发板上编译的,头文件是需要先安装hybris驱动库的。如果要在上位机上编译,需先导出头文件来。这个自己改下了。

isle 发表于 2015-12-30 09:26
上面使用的方式是在开发板上编译的,头文件是需要先安装hybris驱动库的。如果要在上位机上编译,需先导出头 …

嗯嗯,开发板编译太慢了!受不了!

isle 发表于 2015-12-30 09:26
上面使用的方式是在开发板上编译的,头文件是需要先安装hybris驱动库的。如果要在上位机上编译,需先导出头 …

版主,我在开发板编译通过后,执行ffplay std.ts
出现:
could not initialize SDL- Unable to open mouse
Did you set the DISPLAY variable?
我已经把SDL 安装好了的呀!

需要指定DISPLAY : export DISPLAY=:0.0

赞赞赞 {:3_48:}

jingjin221 发表于 2015-12-30 10:42
版主,我在开发板编译通过后,执行ffplay std.ts
出现:
could not initialize SDL- Unable to open mo …

如果没有任何输入设备,则环境变量 export SDL_NOMOUSE=1 ,否则初始化会提示
Couldn’t initialize SDL:Unable to open mouse

isle 发表于 2015-12-30 10:44
需要指定DISPLAY : export DISPLAY=:0.0

版主,
根本播放不起任何视频啊!!!!
各种错误!、
醉了!
你用的什么视频源做的测试!

测试过的视频 :
1920x1080 H264 文件格式mp4
1280x720 H265 文件格式mkv
1280x720 mpeg4 文件格式avi

isle 发表于 2015-12-30 14:37
测试过的视频 :
1920x1080 H264 文件格式mp4
1280x720 H265 文件格式mkv

TS流表示解不动!

jingjin221 发表于 2015-12-30 16:17
TS流表示解不动!

看了代码,你的FFMPEG里面没有加入MPEG2TS的解复用器哦?

jingjin221 发表于 2015-12-30 17:01
看了代码,你的FFMPEG里面没有加入MPEG2TS的解复用器哦?

看错了,有的,有的,mpegts.c

isle 发表于 2015-12-30 14:37
测试过的视频 :
1920x1080 H264 文件格式mp4
1280x720 H265 文件格式mkv

这里硬解出来的NV12数据经过SDL处理,是硬件处理还是软件处理的,有没有调用GPU?

GPU加速没有加进来哦。sdl显示是纯软的。