mirror of
https://github.com/samsonjs/media.git
synced 2026-04-17 13:15:47 +00:00
Notes: - The VP9 one is failing claiming that the util package doesn't exist and that LibraryLoader cannot be found. Unsure why, since it appears to be setup exactly like other extensions (e.g. Opus) that does work. - @link across modules will not work when generating Javadoc for a single module. This is WAI. I subsequent change will add an aggregated Javadoc generator that will generate Javadoc for all modules together and apply cross module @link correctly. Issue: #2139 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=150864273 |
||
|---|---|---|
| .. | ||
| src/main | ||
| build.gradle | ||
| proguard-rules.txt | ||
| README.md | ||
FfmpegAudioRenderer
Description
The FFmpeg extension is a Renderer implementation that uses FFmpeg to decode audio.
Build instructions
- Checkout ExoPlayer along with Extensions
git clone https://github.com/google/ExoPlayer.git
- Set the following environment variables:
cd "<path to exoplayer checkout>"
EXOPLAYER_ROOT="$(pwd)"
FFMPEG_EXT_PATH="${EXOPLAYER_ROOT}/extensions/ffmpeg/src/main"
- Download the Android NDK and set its location in an environment variable:
NDK_PATH="<path to Android NDK>"
- Fetch and build FFmpeg. For example, to fetch and build for armv7a:
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-" \
--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 \
--enable-shared \
--disable-doc \
--disable-programs \
--disable-everything \
--disable-avdevice \
--disable-avformat \
--disable-swscale \
--disable-postproc \
--disable-avfilter \
--disable-symver \
--enable-avresample \
--enable-decoder=vorbis \
--enable-decoder=opus \
--enable-decoder=flac \
--enable-decoder=alac \
&& \
make -j4 && \
make install-libs
- Build the JNI native libraries. Repeat this step for any other architectures you need to support.
cd "${FFMPEG_EXT_PATH}"/jni && \
${NDK_PATH}/ndk-build APP_ABI=armeabi-v7a -j4
- In your project, you can add a dependency on the extension by using a rule like this:
// in settings.gradle
include ':..:ExoPlayer:library'
include ':..:ExoPlayer:extension-ffmpeg'
// in build.gradle
dependencies {
compile project(':..:ExoPlayer:library')
compile project(':..:ExoPlayer:extension-ffmpeg')
}
- Now, when you build your app, the extension will be built and the native libraries will be packaged along with the APK.