ffmpeg Android

      在〈ffmpeg Android〉中尚無留言

ffmpeg Android

x264 Android 這篇的基礎概念,繼續來編譯ffmpeg for Android。本篇的功能,能在Android裝置上讀取影片,然後經由rtmp協定直播到伺服器上。

重要觀念

–enable-shared : 會編譯出 .so檔(動態)
–enable-static : 會編譯出 .a檔(靜態)

下載原始碼

請到 https://www.ffmpeg.org/ 下載 ffmpeg的原始碼,解開後置於家目錄之下

編譯script

在家目錄之下編寫如下的script,命名為build_ffmpeg_arm.sh。此script跟網路上的不一樣,這個是可以build出真正Arm 格式的二進位碼。請更改權限後 chmod 755 build_ffmpeg_arm.sh,然後直接執行 ./build_ffmpeg_arm.sh。

#!/bin/bash
clear
cd ffmpeg
sudo rm -rf out
NDK=/home/thomas/android-ndk-r21e
TOOLCHAINS=$NDK/toolchains/llvm/prebuilt/linux-x86_64
SYSROOT=$TOOLCHAINS/sysroot
API=23

./configure \
--target-os=linux \
--prefix=./out/armeabi-v7a \
--cc=$TOOLCHAINS/bin/armv7a-linux-androideabi$API-clang \
--cxx=$TOOLCHAINS/bin/armv7a-linux-androideabi$API-clang++ \
--cross-prefix=$TOOLCHAINS/bin/arm-linux-androideabi- \
--nm=$TOOLCHAINS/bin/arm-linux-androideabi-nm \
--sysroot=$SYSROOT \
--arch=arm \
--extra-libs="-lgcc" \
--enable-shared \
--disable-static \
--enable-small \
--enable-cross-compile \
--enable-zlib \
--enable-gpl \
--disable-doc \
--disable-symver \
--disable-ffplay \
--disable-ffprobe \
--disable-ffmpeg \
--enable-neon \
--extra-cflags="-DANDROID -fPIC -ffunction-sections -funwind-tables -fstack-protector -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300" \
--extra-ldflags="-Wl,-rpath-link=$SYSROOT/usr/lib -L$SYSROOT/usr/lib -nostdlib -lc -lm -ldl -llog"

sudo make clean
sudo make -j8
sudo make install

echo ffmpeg for armeabi_v7a builds finished

執行上述script時,看到畫面開始跑時可以立即按下Ctrl+C中斷,拉到最上面如果有看到下面的訊息,表示configure設定正確。此時就可以重新執行並安心的讓它跑完。

本script能編出真正的Arm格式,完全在於指定了正確的 cc及cxx ToolChains。不過ffmpeg沒用c++寫,所以cxx可以不用指定也沒關係。

🔒 更多內容,請登入會員繼續閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *