瑞芯微Rockchip开发者社区
直播中

李波

7年用户 1399经验值
私信 关注
[问答]

android5.1 h264软解码速度跟不上导致解码花屏严重怎么解决?

android5.1 h264软解码速度跟不上导致解码花屏严重怎么解决?

回帖(1)

周颂焱

2022-3-3 10:09:11
需求:由于软解码速度跟不上导致解码花屏严重,转用ffmpeg交叉编译android 5.1源码硬解码。

假设已经编译好RK3288 android5.1系统(主要是硬编码用到的libstagefright库)

修改ffmpeg-2.2/configure文件

如果直接按照未修改的配置进行编译,结果编译出来的so文件类似libavcodec.so.55.39.101,版本号位于so之后,Android上似乎无法加载。因此需要按如下修改:

将该文件中的如下四行:

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'

SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'

替换为:

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'

SLIB_INSTALL_LINKS='$(SLIBNAME)'

另外(硬编码相关,否则提示 ERROR: libstagefright_h264 not found):

enabled libstagefright_h264  && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h

media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h

media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static

修改为

enabled libstagefright  && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h

media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h

media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static

编写config_android.sh脚本文件

config_android.sh的内容如下:

这个脚本文件有几个地方需要注意:

给config_android.sh增加可执行权限:

$chmod +x config_android.sh

执行config_android.sh

$./config_android.sh

修改刚刚生成的文件config.h:

#define HAVE_LOG2 1

#define HAVE_LOG2F 1

#define HAVE_POSIX_MEMALIGN 1

修改为

#define HAVE_LOG2 0

#define HAVE_LOG2F 0

#define HAVE_POSIX_MEMALIGN 0

修改文件/libavcodec/libstagefright.cpp(注释掉#include ):

//#include

编译:

make -j6

至此编译完成
举报

更多回帖

发帖
×
20
完善资料,
赚取积分