mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Clean up FFmpeg extension instructions.
Also add instructions for building arm64-v8a and x86. Issue: #2561 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=152141270
This commit is contained in:
parent
8208a75f0a
commit
9bbc6d1071
2 changed files with 44 additions and 24 deletions
|
|
@ -31,21 +31,12 @@ FFMPEG_EXT_PATH="${EXOPLAYER_ROOT}/extensions/ffmpeg/src/main"
|
||||||
NDK_PATH="<path to Android NDK>"
|
NDK_PATH="<path to Android NDK>"
|
||||||
```
|
```
|
||||||
|
|
||||||
* Fetch and build FFmpeg. For example, to fetch and build for armv7a:
|
* Fetch and build FFmpeg. For example, to fetch and build for armeabi-v7a,
|
||||||
|
arm64-v8a and x86 on Linux x86_64:
|
||||||
|
|
||||||
```
|
```
|
||||||
cd "${FFMPEG_EXT_PATH}/jni" && \
|
COMMON_OPTIONS="\
|
||||||
git clone git://source.ffmpeg.org/ffmpeg ffmpeg && cd ffmpeg && \
|
|
||||||
./configure \
|
|
||||||
--libdir=android-libs/armeabi-v7a \
|
|
||||||
--arch=arm \
|
|
||||||
--cpu=armv7-a \
|
|
||||||
--cross-prefix="${NDK_PATH}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-" \
|
|
||||||
--target-os=android \
|
--target-os=android \
|
||||||
--sysroot="${NDK_PATH}/platforms/android-9/arch-arm/" \
|
|
||||||
--extra-cflags="-march=armv7-a -mfloat-abi=softfp" \
|
|
||||||
--extra-ldflags="-Wl,--fix-cortex-a8" \
|
|
||||||
--extra-ldexeflags=-pie \
|
|
||||||
--disable-static \
|
--disable-static \
|
||||||
--enable-shared \
|
--enable-shared \
|
||||||
--disable-doc \
|
--disable-doc \
|
||||||
|
|
@ -57,22 +48,56 @@ git clone git://source.ffmpeg.org/ffmpeg ffmpeg && cd ffmpeg && \
|
||||||
--disable-postproc \
|
--disable-postproc \
|
||||||
--disable-avfilter \
|
--disable-avfilter \
|
||||||
--disable-symver \
|
--disable-symver \
|
||||||
|
--disable-swresample \
|
||||||
--enable-avresample \
|
--enable-avresample \
|
||||||
--enable-decoder=vorbis \
|
--enable-decoder=vorbis \
|
||||||
--enable-decoder=opus \
|
--enable-decoder=opus \
|
||||||
--enable-decoder=flac \
|
--enable-decoder=flac \
|
||||||
--enable-decoder=alac \
|
" && \
|
||||||
|
cd "${FFMPEG_EXT_PATH}/jni" && \
|
||||||
|
git clone git://source.ffmpeg.org/ffmpeg ffmpeg && cd ffmpeg && \
|
||||||
|
./configure \
|
||||||
|
--libdir=android-libs/armeabi-v7a \
|
||||||
|
--arch=arm \
|
||||||
|
--cpu=armv7-a \
|
||||||
|
--cross-prefix="${NDK_PATH}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-" \
|
||||||
|
--sysroot="${NDK_PATH}/platforms/android-9/arch-arm/" \
|
||||||
|
--extra-cflags="-march=armv7-a -mfloat-abi=softfp" \
|
||||||
|
--extra-ldflags="-Wl,--fix-cortex-a8" \
|
||||||
|
--extra-ldexeflags=-pie \
|
||||||
|
${COMMON_OPTIONS} \
|
||||||
&& \
|
&& \
|
||||||
make -j4 && \
|
make -j4 && make install-libs && \
|
||||||
make install-libs
|
make clean && ./configure \
|
||||||
|
--libdir=android-libs/arm64-v8a \
|
||||||
|
--arch=aarch64 \
|
||||||
|
--cpu=armv8-a \
|
||||||
|
--cross-prefix="${NDK_PATH}/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-" \
|
||||||
|
--sysroot="${NDK_PATH}/platforms/android-21/arch-arm64/" \
|
||||||
|
--extra-ldexeflags=-pie \
|
||||||
|
${COMMON_OPTIONS} \
|
||||||
|
&& \
|
||||||
|
make -j4 && make install-libs && \
|
||||||
|
make clean && ./configure \
|
||||||
|
--libdir=android-libs/x86 \
|
||||||
|
--arch=x86 \
|
||||||
|
--cpu=i686 \
|
||||||
|
--cross-prefix="${NDK_PATH}/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-" \
|
||||||
|
--sysroot="${NDK_PATH}/platforms/android-9/arch-x86/" \
|
||||||
|
--extra-ldexeflags=-pie \
|
||||||
|
--disable-asm \
|
||||||
|
${COMMON_OPTIONS} \
|
||||||
|
&& \
|
||||||
|
make -j4 && make install-libs && \
|
||||||
|
make clean
|
||||||
```
|
```
|
||||||
|
|
||||||
* Build the JNI native libraries. Repeat this step for any other architectures
|
* Build the JNI native libraries, setting `APP_ABI` to include the architectures
|
||||||
you need to support.
|
built in the previous step. For example:
|
||||||
|
|
||||||
```
|
```
|
||||||
cd "${FFMPEG_EXT_PATH}"/jni && \
|
cd "${FFMPEG_EXT_PATH}"/jni && \
|
||||||
${NDK_PATH}/ndk-build APP_ABI=armeabi-v7a -j4
|
${NDK_PATH}/ndk-build APP_ABI="armeabi-v7a arm64-v8a x86" -j4
|
||||||
```
|
```
|
||||||
|
|
||||||
* In your project, you can add a dependency on the extension by using a rule
|
* In your project, you can add a dependency on the extension by using a rule
|
||||||
|
|
|
||||||
|
|
@ -31,15 +31,10 @@ LOCAL_MODULE := libavresample
|
||||||
LOCAL_SRC_FILES := ffmpeg/android-libs/$(TARGET_ARCH_ABI)/$(LOCAL_MODULE).so
|
LOCAL_SRC_FILES := ffmpeg/android-libs/$(TARGET_ARCH_ABI)/$(LOCAL_MODULE).so
|
||||||
include $(PREBUILT_SHARED_LIBRARY)
|
include $(PREBUILT_SHARED_LIBRARY)
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
|
||||||
LOCAL_MODULE := libswresample
|
|
||||||
LOCAL_SRC_FILES := ffmpeg/android-libs/$(TARGET_ARCH_ABI)/$(LOCAL_MODULE).so
|
|
||||||
include $(PREBUILT_SHARED_LIBRARY)
|
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE := ffmpeg
|
LOCAL_MODULE := ffmpeg
|
||||||
LOCAL_SRC_FILES := ffmpeg_jni.cc
|
LOCAL_SRC_FILES := ffmpeg_jni.cc
|
||||||
LOCAL_C_INCLUDES := ffmpeg
|
LOCAL_C_INCLUDES := ffmpeg
|
||||||
LOCAL_SHARED_LIBRARIES := libavcodec libavresample libavutil libswresample
|
LOCAL_SHARED_LIBRARIES := libavcodec libavresample libavutil
|
||||||
LOCAL_LDLIBS := -Lffmpeg/android-libs/$(TARGET_ARCH_ABI) -llog
|
LOCAL_LDLIBS := -Lffmpeg/android-libs/$(TARGET_ARCH_ABI) -llog
|
||||||
include $(BUILD_SHARED_LIBRARY)
|
include $(BUILD_SHARED_LIBRARY)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue