我见过一些关于如何编译和使用FFmpeg for Android的文章。
Thess是很好的例子 - example1和example2
不幸的是,没有他们,或者我找到的其他人帮助了我。在这两个示例中,创建了build_android.sh并配置FFmpeg的配置文件并调用make。每当我运行脚本时,我都会收到以下错误:
c:\android\development\android-ndk-r9\sources\ffmpeg>sh build_android.sh
c:/android/development/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebu
ilt/windows-x86_64/arm-linux-androideabi/bin/bin/arm-linux-androideabi-gcc is un
able to create an executable file.
C compiler test failed.
If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solving the problem.
Makefile:2: config.mak: No such file or directory
Makefile:49: /common.mak: No such file or directory
Makefile:92: /libavutil/Makefile: No such file or directory
Makefile:92: /library.mak: No such file or directory
Makefile:169: /doc/Makefile: No such file or directory
Makefile:170: /tests/Makefile: No such file or directory
make: *** No rule to make target `/tests/Makefile'. Stop.
Makefile:2: config.mak: No such file or directory
如果有人遇到并解决了这个问题,我们将不胜感激!
在尝试建议的脚本后,我遇到了一个我无法解决的新问题,这是脚本的输出:
....启用组件列表....
在列表的最后,我得到了以下内容:
启用indevs: dv1394 v4l2i 的fbdev
启用outdevs: fbdev v4l2
许可证:LGPL 2.1或更高版本 创建config.mak,config.h和doc / config.texi ...
警告:C:/ android / development / android-ndk-r9 / toolchains / arm-linux-androideabi-
4.8 / prebuilt / windows-x86_64 / bin / arm-linux-androideabi-pkg-config not found,libr
ary检测可能会失败。
make: *没有规则可以制作目标libavfilter/libavfilter.so', needed by
全部
S'。停止。
make:* 没有规则可以安装目标install-libavfilter-shared', needed by
1-库,没错。停止。
答案 0 :(得分:8)
你可以粘贴你在buildmp文件目录中复制的build_android.sh文件中的内容吗?
当脚本开头定义的其中一个变量设置不正确时,我遇到了同样的错误。检查NDK或SYSROOT或TOOLCHAIN变量是否设置为有效路径!
我尝试使用以下步骤,它对我有用:
1)下载FFmpeg
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
2)在FFmpeg目录中创建一个名为build_android.sh的文件
cd ffmpeg;触摸build_ffmpeg_for_android.sh;
3)将以下内容添加到文件
#!/usr/bin/env bash
NDK=$HOME/Software/Android/android-ndk-r10/
SYSROOT=$NDK/platforms/android-19/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-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 -j4
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
4)使脚本可执行
chmod + x build_ffmpeg_for_android.sh
5)开始构建FFmpeg for Android(ARM)
(用Bash运行脚本,即/ usr / bin / bash不是/ usr / bin / sh)
./ build_ffmpeg_for_android.sh
答案 1 :(得分:1)
我得到了与@ powerX相同的错误,我能够使用@ dZkF9RWJT6wN8ux中的其他方法解决问题。
虽然我使用的是Ubuntu 13.10,但我希望你的回答很有帮助。随着Android NDK r9和FFMPEG 2.2" Muybridge"发布后,我终于完成了第三步,名为" Build FFMPEG"来自@powerX example1链接:http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/
我最后通过更改build_android.sh文件中的SYSROOT变量来指向" ... / android-19 / arch-arm"而不是... / android-9 / arch-arm"。
希望这有帮助。