0

我已经关注了很多关于 buildinf ffmpeg.so 文件的教程,比如

http://enoent.fr/blog/2014/06/20/compile-ffmpeg-for-android/

http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/

还有更多教程,但最后我每次不知道如何解决它时都坚持这个错误请任何人知道如何解决它然后帮助我

我的 build.sh 文件看起来像这样

  NDK=C:/Users/Benzatine/Downloads/android-ndk-r10e
  SYSROOT=$NDK/platforms/android-19/arch-arm/
  TOOLCHAIN=$NDK/toolchains//arm-linux-androideabi-4.8/prebuilt/windows-x86_64
 function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU 
ADDI_CFLAGS="-marm"
build_one

但是当它执行 make 命令时,它会给出以下错误

 LD      libswscale/libswscale-3.so
    c:/users/benzatine/downloads/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld.exe: error:     libavutil/libavutil.so:1:1: syntax error, unexpected '!', expecting $end
c:/users/benzatine/downloads/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld.exe: error: libavutil/libavutil.so: not an object or archive
collect2.exe: error: ld returned 1 exit status
library.mak:111: recipe for target 'libswscale/libswscale-3.so' failed
make: *** [libswscale/libswscale-3.so] Error 1

每次我尝试构建ffmpeg时都会发生这个错误如何解决它请有人帮助我

4

1 回答 1

0

我将假设您正在根据错误消息在 Windows 系统上构建它。

我刚刚在 Facebook 群组上找到了这篇文章,所以我不打算为它做任何功劳。基本上他只是使用其他项目并对其进行调整以使其有效地工作。它使用 Android 'Love' 版本并在 Windows 系统中编译。

FFMpeg ( https://www.ffmpeg.org),用 C 编程语言编写的用于多媒体相关任务的最常用的库之一。它有很多功能可以为您的应用程序添加多媒体支持,但是如果您不想在 C/C++ 中创建应用程序,我们可以将它移植到其他语言的“C”库中。相信我,将它移植到不同的语言是一项充满错误的大量工作。幸运的是,您可以在互联网上找到教程和简单的构建脚本,但毫无疑问,它们只是假设您将其移植到基于 nix 的操作系统中而编写的,而关于在 Windows 操作系统上移植它的少数教程不起作用(至少对我而言。:) ) 但我使用 ffmpeg 的主要原因是向 android 添加标准 Android API 未提供的多媒体功能。我在互联网上找到了一些使用 FFMpeg 'Love' 版本的预制 android 项目。这里是项目。

In case you are wondering how to use it in your Android project , here are the step

1) Add a native support to the Android Project by right-clicking the Android Tools>Add Native Support...
2) Copy 'armeabi' folder to 'libs' folder of your project
3) Replace 'obj' folder with the 'obj' of ffmpeg project in the attached file
4) Add 'ffmpeg' folder to the 'jni' folder
5) Replace 'Androd.mk' folder  with the 'Android.mk' of the ffmpeg project in the attached file
6) Write your code in C/C++ and enjoy

As always if you have any trouble or question you can comment them and I will answer them as soon as possible

附件:http ://robot-mitya.googlecode.com/files/MyFfmpegTest.zip

来源:http ://dmitrydzz-hobby.blogspot.com/2012/04/how-to-build-ffmpeg-and-use-it-in.html

于 2015-12-18T12:42:30.827 回答