OSX 10.12.4에서 Android 용 ffmpeg를 컴파일하려고합니다.OSX에서 Android 용 ffmpeg 컴파일
는 여기에 내가 다음 단계는 다음과 같습니다
1 °) here에서 소스를 다운로드 PKG-설정
를 컴파일합니다. pkg-config 폴더에서 & & cd를 추출하십시오.
export DST=/a/path/on/my/computer
./configure --with-internal-glib --prefix=$DST --exec-prefix=$DST
make -j2
make install
export PATH=$PATH:$DST/bin
2 °)
이 here에서 소스를 다운로드는 FFmpeg 컴파일합니다. ffmpeg 폴더에서 & & cd를 추출하십시오.export NDK=/path/to/android-ndk-r15c
export PLATFORM_VERSION=android-26
export ARCH=arm
export PLATFORM=$NDK/platforms/$PLATFORM_VERSION/arch-$ARCH
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
export PREFIX=$(pwd)/android/$ARCH
export ADDI_CFLAGS="-Os -fpic -marm"
export ADDI_CONFIGURE_FLAG=""
export ADDI_LDFLAGS=""
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-symver \
--disable-avdevice \
\
--pkg-config=pkg-config \
\
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=$ARCH \
--enable-cross-compile \
--sysroot=$PLATFORM \
--extra-cflags="$ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
\
$ADDI_CONFIGURE_FLAG
make -j2
만들기 다음과 같은 오류와 함께 실패는 수정 왜 A1 A0 &의 소스에서 B0 & B1 변수의 이름을 변경하여 해당 오류를 수정할 수있어
AR libavfilter/libavfilter.a
AR libavformat/libavformat.a
CC libavcodec/aaccoder.o
In file included from /Users/Tim/Library/Android/android-ndk-r15c/platforms/android-26/arch-arm/usr/include/asm/termbits.h:19:0,
from /Users/Tim/Library/Android/android-ndk-r15c/platforms/android-26/arch-arm/usr/include/asm-generic/termios.h:21,
from /Users/Tim/Library/Android/android-ndk-r15c/platforms/android-26/arch-arm/usr/include/asm/termios.h:19,
from /Users/Tim/Library/Android/android-ndk-r15c/platforms/android-26/arch-arm/usr/include/linux/termios.h:22,
from /Users/Tim/Library/Android/android-ndk-r15c/platforms/android-26/arch-arm/usr/include/sys/ioctl.h:37,
from ./libavutil/timer.h:36,
from ./libavutil/internal.h:42,
from ./libavutil/common.h:467,
from libavcodec/mathops.h:27,
from libavcodec/aaccoder.c:38:
libavcodec/aaccoder.c: In function 'search_for_ms':
libavcodec/aaccoder.c:803:25: error: expected identifier or '(' before numeric constant
int B0 = 0, B1 = 0;
^
libavcodec/aaccoder.c:865:28: error: lvalue required as left operand of assignment
B0 += b1+b2;
^
libavcodec/aaccoder.c:866:25: error: 'B1' undeclared (first use in this function)
B1 += b3+b4;
^
libavcodec/aaccoder.c:866:25: note: each undeclared identifier is reported only once for each function it appears in
make: *** [libavcodec/aaccoder.o] Error 1
make: *** Waiting for unfinished jobs....
(모르는 문제),하지만 다른 곳에서는 실패합니다. 내 config에서 뭔가 잘못되었다고 생각합니다. 소스를 패치하지 않아도되는 것을 선호합니다.
그래서 질문은 다음과 같습니다 는- 누군가는 여기에 무엇이 문제입니까? gcc에 arg를 주어야합니까?
- 은 --target-os = linux correct 또는 --target-os = darwin이어야합니까? target-os는 컴파일이 완료된 OS이거나 ffmpeg가 실행되는 OS입니까? darwin을 사용하여 --enable-static을 사용하여 컴파일 할 수 있지만 --enable-shared는 사용할 수 없습니다.
참고 : HTTPS를 지원하는 팔 버전 만 원하는만큼 직접 컴파일해야합니다. 따라서 기존의 빌드 된 버전을 사용할 수 없습니다.
내 자신의 질문에 대한 답변을 잊어 버린 것처럼 보입니다. 나는 당신이했던 것과 똑같은 일을하는 구 버전을 택했습니다. 너무 많은 시간을 잃었습니다. –