首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javacv -> ffmpeg中的AMR-NB支持

javacv -> ffmpeg中的AMR-NB支持
EN

Stack Overflow用户
提问于 2013-12-01 17:08:09
回答 1查看 789关注 0票数 3

我试图在AMR_NB安卓系统中使用JavaCV代码,但有一些问题:

这是我运行的代码:

代码语言:javascript
复制
avcodec.avcodec_register_all();
avformat.av_register_all();
AVCodec mCodec = avcodec.avcodec_find_encoder(avcodec.AV_CODEC_ID_AMR_NB);

输出: mCodec是空的,但是如果我传递avcodec.AV_CODEC_ID_AAC,而mCodec不是null

我假设我必须用--启用-libopencore-amrnb重新编译ffmpeg。因此,我下载了Android 9+ffmpeg-2.0.2+finastx264并将它们添加到javacv-cppjars文件夹中,我还在/usr/local中安装了opencore-amr库。在ffmpeg-2.0.2-android-arm.修补程序中,我添加了--启用libopencore-amrnb标志,并在终端中运行以下命令

代码语言:javascript
复制
ANDROID_NDK=/Users/android-ndk-r9b/ FFMPEG_VERSION=2.0.2 ./build_ffmpeg-android-arm.sh

脚本运行,但是库没有生成,jar是空的,但是如果我移除启用libopencore-amrnb标志,那么库就会成功生成,请告诉我我做错了什么?我该怎么办?任何帮助都将不胜感激!

顺便说一下,我使用的是mac-osx。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-06 23:01:33

我假设build_ ffmpeg -android-arm.sh是,如果是这样的话,正确地使用--启用-libopencore-amrnb-您还需要提供opencore-amr库(opencore源代码不包括在ffmpeg代码中),否则configure会抱怨没有找到开放库。

为了修复它,您需要:

  1. 这里下载opencore-amr源代码,并将其复制到javacv-cppjars文件夹中。
  2. 修改build _ffmpeg-Androd-arm.sh以构建和链接opencore的库:
代码语言:javascript
复制
ANDROID_BIN=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/    
ANDROID_ROOT=$ANDROID_NDK/platforms/android-9/arch-arm/
tar -xjvf ffmpeg-$FFMPEG_VERSION.tar.bz2
mv ffmpeg-$FFMPEG_VERSION ffmpeg-$FFMPEG_VERSION-android-arm
cd ffmpeg-$FFMPEG_VERSION-android-arm
tar -xjvf ../last_stable_x264.tar.bz2
X264=`echo x264-snapshot-*`
cd $X264
./configure --enable-static --enable-pic --disable-cli --cross-prefix=$ANDROID_BIN/arm-linux-androideabi- --sysroot=$ANDROID_ROOT --host=arm-linux --extra-cflags="-DANDROID -fPIC -ffunction-sections -funwind-tables -fstack-protector -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mfpu=neon -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300" --extra-ldflags="-nostdlib -Wl,--fix-cortex-a8 -lgcc -ldl -lz -lm -lc"
make -j4
cd ../

tar -xzf ../opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3
BUILD_FLAGS="--sysroot=$ANDROID_NDK/platforms/android-9/arch-arm"
CFLAGS="$BUILD_FLAGS" CXXFLAGS="$BUILD_FLAGS" CPPFLAGS="$BUILD_FLAGS" RANLIB=$ANDROID_BIN/arm-linux-androideabi-ranlib CC=$ANDROID_BIN/arm-linux-androideabi-gcc CXX=$ANDROID_BIN/arm-linux-androideabi-g++ LD=$ANDROID_BIN/arm-linux-androideabi-ld CPP=$ANDROID_BIN/arm-linux-androideabi-cpp LDFLAGS="-L$ANDROID_NDK/platforms/android-9/arch-arm/usr/lib/" ./configure --host=arm-linux-gnu --disable-shared
make
mv amrnb opencore-amrnb
cd ../

patch -p1 < ../ffmpeg-$FFMPEG_VERSION-android-arm.patch
./configure --prefix=$HOME/android --enable-libopencore-amrnb --extra-cflags="-Iopencore-amr-0.1.3" --extra-ldflags="-Lopencore-amr-0.1.3/opencore-amrnb/.libs" --enable-shared --enable-gpl --enable-version3 --enable-runtime-cpudetect --disable-outdev=sdl --enable-libx264 --extra-cflags="-I$X264" --extra-ldflags="-L$X264" --enable-cross-compile --cc=$ANDROID_BIN/arm-linux-androideabi-gcc --sysroot=$ANDROID_ROOT --target-os=linux --arch=arm --extra-cflags="-DANDROID -fPIC -ffunction-sections -funwind-tables -fstack-protector -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mfpu=neon -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300" --extra-ldflags="-nostdlib -Wl,--fix-cortex-a8" --extra-libs="-lgcc -ldl -lz -lm -lc" --disable-stripping --disable-symver --disable-programs
make
LIBS="libavcodec/libavcodec.so libavdevice/libavdevice.so libavfilter/libavfilter.so libavformat/libavformat.so libavutil/libavutil.so libpostproc/libpostproc.so libswresample/libswresample.so libswscale/libswscale.so"
$ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip $LIBS
mkdir -p com/googlecode/javacv/cpp/android-arm/
cp $LIBS com/googlecode/javacv/cpp/android-arm/
jar cvf ../ffmpeg-$FFMPEG_VERSION-android-arm.jar com/
rm -Rf com/
cd ../

再建一次。请注意,新的章节的建设开放是基于0.1.3节和小技巧重命名的amrnb文件夹。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20314819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档