日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffplay android 编译,ffmpeg android 平台编译

發(fā)布時間:2023/12/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffplay android 编译,ffmpeg android 平台编译 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ?ffmpeg 在移動平臺上應(yīng)用十分廣泛,其在音視頻編解碼,封裝多媒體文件格式,rtsp http rtmp協(xié)議相關(guān)的音視頻推流拉流具有強(qiáng)大的可用性。這里將自己平時為Android平臺編譯ffmpeg的用到的腳本分享出來,方便大家參考。本文編譯是在MAC電腦上完成的,當(dāng)然Linux系統(tǒng)也可以。

? ?ffmpeg 編譯根據(jù)github上 WritingMinds/ffmpeg-android編譯腳本,進(jìn)行了修改,添加arm64-v8a平臺的編譯,解決鏈接是出現(xiàn)的ELF格式不對錯誤,解決高版本的ndk工具編譯導(dǎo)致的鏈接錯誤。本文采用ffmpeg的版本3.0進(jìn)行編譯成靜態(tài)庫,方便以后跟jni一起打包成動態(tài)庫,如果需要編譯成動態(tài)庫,只需要將 ffmpeg_build.sh 中 --disable-shared 編譯選項(xiàng) 改為?--enable-shared即可。注意:與JNI其它代碼一起封裝成動態(tài)庫是 鏈接ffmpeg靜態(tài)庫的順序也很重要,如果出現(xiàn)順序不對可能導(dǎo)致鏈接不成功。

? ?編譯腳本分為4個sh文件android_build.sh settings.sh abi_settings.sh ffmpeg_build.sh。在進(jìn)行ffmpeg編譯時只需要運(yùn)行./android_build.sh 即可完成arm64-v8a armeabi-v7a編譯

android_build.sh?

#!/bin/bash

# 執(zhí)行編譯時,運(yùn)行./android_build.sh即可

# 首先執(zhí)行 settings.sh 腳本 完成基礎(chǔ)環(huán)境配置

. settings.sh

BASEDIR=$(pwd)

TOOLCHAIN_PREFIX=${BASEDIR}/toolchain-android

# Applying required patches

patch -p0 -N --dry-run --silent -f fontconfig/src/fcxml.c < android_donot_use_lconv.patch 1>/dev/null

if [ $? -eq 0 ]; then

patch -p0 -f fontconfig/src/fcxml.c < android_donot_use_lconv.patch

fi

# 根據(jù)settings.sh 定義需要平臺的cpu類型進(jìn)行分別編譯

for i in "${SUPPORTED_ARCHITECTURES[@]}"

do

rm -rf ${TOOLCHAIN_PREFIX}

# $1 = architecture

# $2 = base directory

# $3 = pass 1 if you want to export default compiler environment variables

#./x264_build.sh $i $BASEDIR 0 || exit 1

#./libpng_build.sh $i $BASEDIR 1 || exit 1

#./freetype_build.sh $i $BASEDIR 1 || exit 1

#./expat_build.sh $i $BASEDIR 1 || exit 1

#./fribidi_build.sh $i $BASEDIR 1 || exit 1

#./fontconfig_build.sh $i $BASEDIR 1 || exit 1

#./libass_build.sh $i $BASEDIR 1 || exit 1

#./lame_build.sh $i $BASEDIR 1 || exit 1

./ffmpeg_build.sh $i $BASEDIR 0 || exit 1

done

rm -rf ${TOOLCHAIN_PREFIX}

settings.sh

#!/bin/bash

# 定義Android NDK目錄 測試使用的NDK版本為17

ANDROID_NDK=/Users/who/Library/Android/ndk-bundle

# 需要的eabi類型,一般有arm32位和 arm64位即可滿足大部分的需求

SUPPORTED_ARCHITECTURES=(arm64-v8a armeabi-v7a)

#SUPPORTED_ARCHITECTURES=(arm64-v8a armeabi-v7a armeabi-v7a-neon x86)

ANDROID_NDK_ROOT_PATH=${ANDROID_NDK}

if [[ -z "$ANDROID_NDK_ROOT_PATH" ]]; then

echo "You need to set ANDROID_NDK environment variable, please check instructions"

exit

fi

# 定義支持的Android版本,此處最小支持到21,即Android5.0

ANDROID_API_VERSION=21

NDK_TOOLCHAIN_ABI_VERSION=4.9

NUMBER_OF_CORES=$(nproc)

HOST_UNAME=$(uname -m)

TARGET_OS=android

# 此處定義編譯選項(xiàng),在原文基礎(chǔ)上添加-D__ANDROID_API__=21,解決在高版本的NDK編譯過程中出現(xiàn)鏈接錯誤的問題

CFLAGS='-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all -D__ANDROID_API__=21'

LDFLAGS='-Wl,-z,relro -Wl,-z,now -pie'

FFMPEG_PKG_CONFIG="$(pwd)/ffmpeg-pkg-config"

? ?abi_settings.sh

#!/bin/bash

. settings.sh

BASEDIR=$2

case $1 in

armeabi-v7a)

NDK_ABI='arm'

NDK_TOOLCHAIN_ABI='arm-linux-androideabi'

NDK_CROSS_PREFIX="${NDK_TOOLCHAIN_ABI}"

;;

armeabi-v7a-neon)

NDK_ABI='arm'

NDK_TOOLCHAIN_ABI='arm-linux-androideabi'

NDK_CROSS_PREFIX="${NDK_TOOLCHAIN_ABI}"

CFLAGS="${CFLAGS} -mfpu=neon"

;;

arm64-v8a)

NDK_ABI='arm64'

NDK_TOOLCHAIN_ABI='aarch64-linux-android'

NDK_CROSS_PREFIX="${NDK_TOOLCHAIN_ABI}"

;;

x86)

NDK_ABI='x86'

NDK_TOOLCHAIN_ABI='x86'

NDK_CROSS_PREFIX="i686-linux-android"

CFLAGS="$CFLAGS -march=i686"

;;

esac

TOOLCHAIN_PREFIX=${BASEDIR}/toolchain-android

if [ ! -d "$TOOLCHAIN_PREFIX" ]; then

${ANDROID_NDK_ROOT_PATH}/build/tools/make-standalone-toolchain.sh --toolchain=${NDK_TOOLCHAIN_ABI}-${NDK_TOOLCHAIN_ABI_VERSION} --platform=android-${ANDROID_API_VERSION} --install-dir=${TOOLCHAIN_PREFIX}

fi

CROSS_PREFIX=${TOOLCHAIN_PREFIX}/bin/${NDK_CROSS_PREFIX}-

NDK_SYSROOT=${TOOLCHAIN_PREFIX}/sysroot

ffmpeg_build.sh

#!/bin/bash

. abi_settings.sh $1 $2 $3

pushd ffmpeg

# 添加這兩行 刪除stdtod.d stdtod.o這兩個文件,否則導(dǎo)致鏈接錯誤

rm -rf compat/strtod.d

rm -rf compat/strtod.o

# 在原有基礎(chǔ)上添加 arm64-v8a 平臺

case $1 in

armeabi-v7a | armeabi-v7a-neon)

CPU='cortex-a8'

;;

arm64-v8a)

CPU='armv8-a'

;;

x86)

CPU='i686'

;;

esac

make clean

./configure \n--target-os="$TARGET_OS" \n--cross-prefix="$CROSS_PREFIX" \n--arch="$NDK_ABI" \n--cpu="$CPU" \n--enable-runtime-cpudetect \n--sysroot="$NDK_SYSROOT" \n--enable-pic \n--enable-pthreads \n--disable-debug \n--enable-version3 \n--enable-hardcoded-tables \n--disable-ffplay \n--disable-ffprobe \n--disable-ffserver \n--disable-ffmpeg \n--enable-gpl \n--enable-yasm \n--disable-doc \n--disable-shared \n--enable-static \n--pkg-config="${2}/ffmpeg-pkg-config" \n--prefix="${2}/build/${1}" \n--extra-cflags="-I${TOOLCHAIN_PREFIX}/include $CFLAGS" \n--extra-ldflags="-L${TOOLCHAIN_PREFIX}/lib $LDFLAGS" \n--extra-cxxflags="$CXX_FLAGS" || exit 1

make -j4 && make install || exit 1

popd

?

總結(jié)

以上是生活随笔為你收集整理的ffplay android 编译,ffmpeg android 平台编译的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品无码国产污污污在线观看 | av2014天堂网 | 一级黄色片在线 | 90岁肥老奶奶毛毛外套 | 欧美综合影院 | 免费福利av | 日韩大片一区二区 | 免费观看污 | 黄色大片在线播放 | 免费观看一区 | 性视频免费 | 欧美精品一级二级 | 成人v精品蜜桃久一区 | 欧美日韩加勒比 | 99精品欧美一区二区三区 | 色片在线免费观看 | 久久久久中文 | 欧美a级免费 | 草莓视频在线观看入口w | 国产操女人 | 精品视频在线观看 | 天天做日日干 | 97碰| 欧美性猛交xx乱大交 | 天天鲁一鲁摸一摸爽一爽 | 泰剧19禁啪啪无遮挡 | 妖精视频一区二区 | 神马午夜伦理影院 | 国产婷婷色一区二区三区在线 | 日韩高清毛片 | 天堂中文字幕在线 | 成年人视频在线播放 | 日本a v在线播放 | 中文字幕线人 | 久久久久久久国产精品视频 | 影音先锋婷婷 | 日本不卡视频 | 亚洲国产精品综合 | av收藏小四郎最新地址 | 捆绑无遮挡打光屁股 | 在线观看成人免费视频 | 欧美一卡二卡在线观看 | 亚洲精品久久久久久动漫器材一区 | 精品视频一区二区 | 天天综合91 | 久久538 | 欧美精品一区二区三区四区五区 | 国产原创中文av | 欧美一区国产一区 | 毛片黄片免费看 | 好吊日免费视频 | 五月天导航 | 日韩天堂在线观看 | 9色视频在线观看 | 内射合集对白在线 | 欧美日韩亚洲国产另类 | 大肉大捧一进一出好爽视频动漫 | 久久视频在线观看 | 国产成人亚洲一区二区 | 色94色欧美 | 亚洲av成人无码一二三在线观看 | 中文字幕视频网 | 日本系列第一页 | 亚洲最大成人在线视频 | 国产欧美精品一区二区在线播放 | 久久性生活视频 | 亚洲国内在线 | 最新在线中文字幕 | av有声小说一区二区三区 | 91啪在线| 夜夜高潮夜夜爽国产伦精品 | 欧美成人aaaaa| 黄色一级大片在线观看 | 国产精品麻豆成人av电影艾秋 | 亚洲中文字幕一区二区在线观看 | 日韩中文字幕在线不卡 | 精品久久久中文字幕 | 亚洲日皮| 爱情岛亚洲首页论坛 | 免费看美女被靠到爽的视频 | 无码少妇精品一区二区免费动态 | 毛片毛片毛片毛片毛片 | 在线观看中文字幕一区 | 中国一区二区三区 | 免费精品在线视频 | 少女国产免费观看 | 尤物视频免费观看 | 在线视频一区二区三区 | 国产成人啪精品午夜在线观看 | 男人的天堂99 | 熟妇人妻av无码一区二区三区 | 久久人人爽人人 | 欧美性视屏 | 久久人人爽爽人人爽人人片av | 亚洲精品国产精品乱码在线观看 | 蘑菇av| 亚洲视频一区在线观看 | 毛片www| 欧美v日本 |