gpt4 book ai didi

windows - 使用cygwin在windows上编译ffmpeg的问题

转载 作者:可可西里 更新时间:2023-11-01 13:47:14 28 4
gpt4 key购买 nike

我最近在Windows 上编译ffmpeg 遇到了很多麻烦。我目前正在使用 cgywin 终端来运行代码。我已经尝试按照网络上许多最流行的教程进行操作,但似乎无法正常工作。我目前正在使用本教程作为指南 http://www.roman10.net/how-to-build-ffmpeg-for-android/

我在哪里:

我已经创建了一个 bash 脚本

#!/bin/bash

NDK=C:/Users/jrblain/Development/adt-bundle-windows-x86_64-20130514/android-ndk-r9
PLATFORM=$NDK/platforms/android-8/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64
function build_one
{
./configure --target-os=linux \
--prefix=$PREFIX \
--enable-cross-compile \
--extra-libs="-lgcc" \
--arch=arm \
--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--nm=$PREBUILT/bin/arm-linux-androideabi-nm \
--sysroot=$PLATFORM \
--extra-cflags=" -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 $OPTIMIZE_CFLAGS " \
--disable-shared \
--enable-static \
--extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -llog" \
--disable-everything \
--enable-demuxer=mov \
--enable-demuxer=h264 \
--disable-ffplay \
--enable-protocol=file \
--enable-avformat \
--enable-avcodec \
--enable-decoder=rawvideo \
--enable-decoder=mjpeg \
--enable-decoder=h263 \
--enable-decoder=mpeg4 \
--enable-decoder=h264 \
--enable-parser=h264 \
--disable-network \
--enable-zlib \
--disable-avfilter \
--disable-avdevice \
$ADDITIONAL_CONFIGURE_FLAG

make clean
make -j4 install
$PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
}

#arm v6
#CPU=armv6
#OPTIMIZE_CFLAGS="-marm -march=$CPU"
#PREFIX=./android/$CPU
#ADDITIONAL_CONFIGURE_FLAG=
#build_one

#arm v7vfpv3
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU "
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_one

#arm v7vfp
#CPU=armv7-a
#OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
#PREFIX=./android/$CPU-vfp
#ADDITIONAL_CONFIGURE_FLAG=
#build_one

#arm v7n
#CPU=armv7-a
#OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8"
#PREFIX=./android/$CPU
#ADDITIONAL_CONFIGURE_FLAG=--enable-neon
#build_one

#arm v6+vfp
#CPU=armv6
#OPTIMIZE_CFLAGS="-DCMP_HAVE_VFP -mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU"
#PREFIX=./android/${CPU}_vfp
#ADDITIONAL_CONFIGURE_FLAG=
#build_one

然后我按照这篇文章的步骤 4-6 进行操作 Does anyone find this useful? - Compiling FFMPEG on Windows with Cywin and NDK r5其中包括

4 - Open the file 'configure' in the root of the FFMPEG directory in a text editor.

5 - Comment out lines 2073, 2074 and 2075.

6 - Below 2075, add the following line:

TMPDIR=c:/cygwin/tmp

当我在 cgywin 中运行脚本时,我得到了这个结果:

    install prefix            ./android/armv7-a
source path .
C compiler C:/Users/jrblain/Development/adt-bundle-windows-x86_64-20130514/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/arm-linux-androideabi-gcc
ARCH arm (armv7-a)
big-endian no
runtime cpu detection yes
ARMv5TE enabled yes
ARMv6 enabled yes
ARMv6T2 enabled yes
VFP enabled yes
NEON enabled yes
THUMB enabled no
debug symbols yes
strip symbols yes
optimize for size no
optimizations yes
static yes
shared no
postprocessing support no
new filter support no
network support no
threading support pthreads
safe bitstream reader yes
SDL support no
opencl enabled no
texi2html enabled no
perl enabled no
pod2man enabled no
makeinfo enabled no

External libraries:
zlib

Enabled decoders:
h263 mjpeg rawvideo
h264 mpeg4

Enabled encoders:

Enabled hwaccels:

Enabled parsers:
h263 h264 mpeg4video

Enabled demuxers:
h264 mov

Enabled muxers:

Enabled protocols:
file

Enabled filters:

Enabled bsfs:

Enabled indevs:

Enabled outdevs:

License: LGPL version 2.1 or later
Creating config.mak, config.h, and doc/config.texi...
libavutil/avconfig.h is unchanged

WARNING: C:/Users/jrblain/Development/adt-bundle-windows-x86_64-20130514/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/arm-linux-androideabi-pkg-config not found, library detection may fail.
library.mak:105: *** missing separator. Stop.
library.mak:105: *** missing separator. Stop.
C:\Users\jrblain\Development\adt-bundle-windows-x86_64-20130514\android-ndk-r9\toolchains\arm-linux-androideabi-4.6\prebuilt\windows-x86_64\bin\arm-linux-androideabi-ld.exe: ,noexecstack: unknown -z option
C:\Users\jrblain\Development\adt-bundle-windows-x86_64-20130514\android-ndk-r9\toolchains\arm-linux-androideabi-4.6\prebuilt\windows-x86_64\bin\arm-linux-androideabi-ld.exe: use the --help option for usage information

此脚本运行后,我在 ffmpeg 文件夹中获得了一些新文件。它们是 .config、config(header)、config.mak、config.fate。 android 文件夹永远不会像它应该的那样创建。我也不确定 library.mak 错误是从哪里来的,因为它是随 ffmpeg 下载而来的。

我不确定在这一切中我哪里出错了。我觉得我使用的是 Windows 会让这个构建过程有所不同。

最佳答案

第一个错误是“警告:C:/.../arm-linux-androideabi-pkg-config 未找到,库检测可能失败。”所以我建议修复路径。

“C:/”不是 POSIX 路径。 Cygwin 程序能够翻译它(带有警告)。

cd 'c:' # works. cd is a built-in command
ls 'c:' # doesn't work
ls 'c:/' # works (edited)

关于 Cygwin 如何映射的文档 POSIX- and Win32-style paths .

根据我的经验,当您混合斜杠和反斜杠或从 Cygwin 调用 Windows native 命令时,您会遇到问题。 Example :

javac -cp "$(cygpath -pw "$CLASSPATH")" hello.java

在我看来,您应该对 POSIX 路径进行硬编码,或者使用以下命令:

cygpath -u 'c:' # the relevant command provided by Cygwin
(cd 'c:' && pwd) # a tip, useful if you want a portable syntax

但也许我完全错了。我想你已经检查过路径了

ls 'C:/Users/jrblain/Development/adt-bundle-windows-x86_64-20130514/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/arm-linux-androideabi-pkg-config'

而且我假设您已经检查了 mk 文件的第 105 行(制表和 linux 换行)。

关于windows - 使用cygwin在windows上编译ffmpeg的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18190605/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com