ffmpeg 编译ffmpeg编译支持MediaCodec

ffmpeg编译支持MediaCodec,MediaCodec是adroid提供的一套编解码的接口,跟底层硬件是分离的,可以直接使用底层的硬件加速来编解码音视频,那么ffmeg怎么把这个mediaCodec集成进去了??
MediaCodec是android提供的一套编解码的接口,跟底层硬件是分离的,可以直接使用底层的硬件加速来编解码音视频,那么ffmpeg怎么把这个mediaCodec集成进去了??工具/原料ffmepglinux,ndk,mediacodec方法/步骤11、下载源码,在百度上搜索下载ffmpeg的源码(我下的是3.14的),ffmpeg的源码在不断的更新,每个版本更新都会标明作了什么修改,可以查更新日志,ffmpeg官网显示是已经支持mediacodec步骤阅读22、通过查阅ffmepg的官方文档,如下图所示,只支持mediacodec的解码使用步骤阅读步骤阅读33、准备编译脚本#!/bin/bashSYSROOT=$NDK/platforms/android-9/arch-arm/TOOLCHAIN=/root/android/androidcrosstoolfunctionbuild_one{./configure\\  --prefix=/root/android/ffmpeg-3.1.4/android/armv7-a\\  --enable-shared\\  --disable-static\\  --disable-programs\\  --disable-ffmpeg\\  --disable-ffplay\\  --disable-ffprobe\\  --disable-ffserver\\  --disable-doc\\  --disable-htmlpages\\  --disable-manpages\\  --disable-podpages\\  --disable-txtpages\\  --enable-swresample\\  --disable-debug\\  --disable-symver\\ --enable-jni\\ --enable-mediacodec\\ --enable-decoder=h264_mediacodec\\ --enable-hwaccel=h264_mediacodec\\  --enable-memalign-hack\\  --enable-gpl\\  --enable-nonfree\\  --enable-version3\\  --enable-asm\\ --enable-cross-compile\\ --enable-filter=scale\\  --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi-\\  --target-os=linux\\  --arch=arm\\  --cpu=armv7-a\\  --enable-neon\\  --sysroot=$SYSROOT\\  --extra-cflags=\"-march=armv7-a -mfpu=neon\"\\  --extra-ldflags=\"-Wl,-lc-lm-ldl-llog\"\\  $ADDITIONAL_CONFIGURE_FLAG}CPU=armv7-a PREFIX=$(pwd)/android/$CPUbuild_one主要的部份已经在下图用红色框标注了步骤阅读44、在配置之前,需要注意一点,因为android只能识别.so结尾的动态库,新版本的ffmpeg在编译生成后,它的文件名不是以.so结尾的,需要作一些修改让它以.so结尾打开ffmpeg源码目录下的configure文件,找到下面这些宏定义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)\'具体参考下图步骤阅读55、打开终端,进入ffmpeg的源码目录,运行配置脚本,配置通过后再执行make-j8编译编译通过后再执行makeinstall安装到指定的目录步骤阅读66、这里也写一下使用方法首先要在程序初始化的时候调用av_jni_set_java_vm(vm,NULL);要注意包含头文件的时候别忘了像下面这样加上extern\"C\",不然会提示找不到av_jni_set_java_vm的然后是在初始化解码器这前,把那些软件解码器强行换成mediacodec支持的硬件解码器这样子基本上跟平常使用ffmpeg是一样的了另外要注意的是找5.0以上的android才行如果你不知道,它支持那些mediacodec解码,你可以使用./configure--list-decoders来查看,3.14版本的只支持h264的步骤阅读END注意事项仅供学习参考

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/j1wR4E06e4.html

(0)

相关推荐