Windows 中的 FFMPEG for android 无法成功编译

Posted

技术标签:

【中文标题】Windows 中的 FFMPEG for android 无法成功编译【英文标题】:FFMPEG for android in Windows not successfully compile 【发布时间】:2014-09-27 18:50:09 【问题描述】:

我正在尝试在 Windows 8.1 中为 android 编译 FFMPEG,但在 build_android.sh 的第 32 行出现错误

./build_android.sh:第 32 行:语法错误:文件意外结束

当我在 cygwin 中执行命令时

chmod +x build_android.sh

./build_android.sh

如果您知道在 windows 中为 android 编译 ffmpeg 的步骤以及如何在 android 中使用 ffmpeg,请回复我。

我在引用 . http://www.packtpub.com/sites/default/files/downloads/Developing_Multimedia_Applications_with_NDK.pdf ,

https://trac.ffmpeg.org/wiki/CompilationGuide/Android 和

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

build_android.sh

#!/bin/bash
NDK=E:/android-ndk-r9d
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/windows
function build_one  ./configure \
--prefix=$PREFIX \
--disable-shared \
--enable-static \
--disable-doc \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--enable-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

【问题讨论】:

【参考方案1】:
    检查行尾(使用 dos2unix 修复) $ADDITIONAL_CONFIGURE_FLAG - 检查此变量是否不包含未封闭的配额/括号。

【讨论】:

【参考方案2】:

您可以将其用作 build_android.sh,我对其进行了测试,它对我有效

#!/bin/bash
NDK=D:/android/ndk/android-ndk-r10d
SYSROOT=$NDK/platforms/android-8/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/windows
function build_one

./configure \
--prefix=$PREFIX \
--disable-shared \
--enable-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

您还需要运行以下命令:

dos2unix build_android.sh
chmod +x build_android.sh
./build_android.sh

【讨论】:

【参考方案3】:

改变

make instal 

make install

make install; 

因为这样,您将 作为 make 的第二个参数传递,并且您的函数 build_one 没有关闭

编辑

你可以试试这个吗?

NDK=E:/android-ndk-r9d
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/windows
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
./configure \
--prefix=$PREFIX \
--disable-shared \
--enable-static \
--disable-doc \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--enable-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

【讨论】:

./configure: line 9: $'\r': command not found ): No such file or directoryg: setlocale: LC_ALL: cannot change locale (C': not a valid identifierort: @987654329 @$'\r'' '/configure:第 17 行:`try_exec() 您必须使用 unix 行尾 (\n) 保存脚本,而不是 Windows/DOS 行尾 (\r\n)。 错误信息说 ./configure 有 DOS 行尾,检查这个文件。 如何查看是否以DOS行结尾? 让我们continue this discussion in chat。

以上是关于Windows 中的 FFMPEG for android 无法成功编译的主要内容,如果未能解决你的问题,请参考以下文章

Windows系统下编译FFmpeg for Android(支持x264)

windows下ffmpeg批量转码

Memory Limits for Windows and Windows Server Releases

Windows安装ffmpeg,使用ffmpeg从视频中的抽取图像

使用 FFMpeg for android 解码视频

ffmpeg视频编解码 demo初探(包含下载指定windows版本ffmpeg)分离视频文件中的视频流每一帧YUV图片