标签:
需求:由于软解码速度跟不上,解码屏幕严重,转用ffmpeg交叉编译安卓5.1源代码进行硬解码。
假设您编译了RK3288 android5.1系统(主要用于硬编码的libstagefright库)
修改ffmpeg-2.2/configure文件
如果按未修改的配置进行编译,则编译的so文件类似于libavcodec.so.55.39.101,如果版本号位于so之后,则Android似乎无法加载。 因此,需要修正如下。
将此文件中的下四行添加到
s libname _ with _ major=' $ (s libname ).$ ) $(LIBMAJOR )。
lib _ install _ extra _ cmd=' $ $ (ranlib ($ ) $(LIBDIR )/$ (libname ) )。
slib _ install _ name=' $ (s libname _ with _ version ) '
slib _ install _ links=' $ ($ (slibname _ with _ major ) $ ) s libname ) '
替换为:
s libname _ with _ major=' $ (slibpref ) $(fullname(-$ ) libmajor ) $(SLIBSUF ) '
lib _ install _ extra _ cmd=' $ $ (ranlib ) ($ ) $(LIBDIR )/$ (libname ) )。
slib _ install _ name=' $ (s libname _ with _ major ) '
SLIB_INSTALL_LINKS='$(SLIBNAME ) '
此外,还提供硬编码相关,否则为error : libstagefright _ h 264 not found :
enabledlibstagefright _ h264 require _ cpplibstagefright _ h264 ' binder/process state.h media/stage fright/metadata .
媒体/stage fright/mediabuffergroup.h media/stage fright/media debug.h media/stage fright/media defs.h
media/stage fright/omx client.h media/stage fright/omx codec.h ' Android 33603360 omx client-lstage fright-l media-l
修改为
enabledlibstagefrightrequire _ cpplibstagefright _ h264 ' binder/process state.h media/stage fright/metadata.h
媒体/stage fright/mediabuffergroup.h media/stage fright/media debug.h media/stage fright/media defs.h
media/stage fright/omx client.h media/stage fright/omx codec.h ' Android 33603360 omx client-lstage fright-l media-l
创建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 ) :
//#包含
编译:
make -j6
编译到此结束
参考资料:
标签:
资料来源: https://blog.csdn.net/pizzi ars/article/details/83178576