2017-10-20 2 views
1

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를 지원하는 팔 버전 만 원하는만큼 직접 컴파일해야합니다. 따라서 기존의 빌드 된 버전을 사용할 수 없습니다.

답변

0

ffmpeg 3.4 최신 버전을 만들려고 할 때도이 문제가 발생했습니다. 3.3 버전을 사용해 보시기 바랍니다. 성공적으로 빌드했습니다. 최신 버전이 불안정하고 버그가있는 것으로 의심됩니다. 그건 그렇고, 당신은 대답을 취할 수 있습니다이 기사를 통해 : http://alientechlab.com/how-to-build-ffmpeg-for-android/

+0

내 자신의 질문에 대한 답변을 잊어 버린 것처럼 보입니다. 나는 당신이했던 것과 똑같은 일을하는 구 버전을 택했습니다. 너무 많은 시간을 잃었습니다. –