FFMPEG Android(4)打开Android硬件编码

来源:互联网 发布:数据精灵授权管理系统 编辑:程序博客网 时间:2024/05/21 14:58

1:在编译时enable  mediacodec 相关功能。

function build_ffmpeg{./configure \--prefix=$PREFIX \--pkg-config-flags="--static" \--extra-libs="-lgcc" \--extra-cflags="-I$PREFIX/include -static" \--extra-ldflags="-L$PREFIX/lib -static" \--disable-shared \--enable-static \--disable-doc \--enable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-ffserver \--disable-avdevice \--disable-doc \--disable-symver \--disable-encoders \--enable-gpl \--enable-libx264 \--enable-encoder=aac \--enable-encoder=libx264 \--enable-parser=h264 \--enable-jni \--enable-mediacodec \--disable-decoders \--enable-decoder=h264_mediacodec \--enable-decoder=vp8_mediacodec \--enable-decoder=vp9_mediacodec \--enable-decoder=mpeg4_mediacodec \--enable-decoder=hevc_mediacodec \--enable-decoder=h264 \--enable-decoder=mpeg4 \--enable-decoder=aac \--enable-decoder=mp3 \--enable-decoder=amr \--disable-muxers \--enable-muxer=m4v \--enable-muxer=mp4 \--enable-muxer=mov \--disable-demuxers \--enable-demuxer=flv \--enable-demuxer=matroska \--enable-demuxer=mov \--enable-demuxer=m4v \--enable-demuxer=avi \--disable-parsers \--enable-parser=aac \--enable-parser=h264 \--enable-parser=mpeg4video \--enable-parser=mpegaudio \--enable-parser=mpegvideo \--disable-protocols \--enable-protocol=file \--disable-devices \--enable-small \--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \--target-os=linux \--arch=arm \--enable-cross-compile \--sysroot=$SYSROOT \$ADDITIONAL_CONFIGURE_FLAGmake cleanrm build.logmake -j8 | tee build.logmake install


2:enable之后,仍然无法使用硬解码。必须在Android代码中注册JavaVM。


jint JNI_OnLoad(JavaVM* vm, void* reserved){LOGI("ffmpeg JNI_OnLoad");av_jni_set_java_vm(vm, reserved);    return JNI_VERSION_1_6;}

完成了这两步,在android 转码过程中,会优先使用mediacodec作为解码。


问题:

1:在部分机器上,加载so失败。

这是由于ndk版本导致,新的ndk会有这部分问题。目前觉得方案是切换到ndk8下进行编译。


1 0