最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Android平臺下的音視頻教程(1)

2020-05-06 22:13 作者:一只過期了的咸魚  | 我要投稿

我會把我所有Android平臺下音視頻的相關經(jīng)驗都會毫無保留的分享出來 大家可以留言 咱們互相交流一下 畢竟新學習是無止境的嘛

我會從庫的編譯來寫起 除了ffmpeg 我還用過librtmp libyuv libfaac x264這些庫?

第一次就寫一下編譯ffmpeg吧?

用的是Linux虛擬機

首先是只有解碼的版本 編譯出來的庫比較小 只用作播放器

NDK_ROOT=/home/dfh/android-ndk-r14b

CPU=arm-linux-androideabi

TOOLCHAIN=$NDK_ROOT/toolchains/$CPU-4.9/prebuilt/linux-x86_64


FLAGS="-isystem?$NDK_ROOT/sysroot/usr/include/arm-linux-androideabi?-D__ANDROID_API__=21?-g?-DANDROID?-ffunction-sections?-funwind-tables?-fstack-protector-strong?-no-canonical-prefixes?-march=armv7-a?-mfloat-abi=softfp?-mfpu=vfpv3-d16?-mthumb?-Wa,--noexecstack?-Wformat?-Werror=format-security??-O0?-fPIC"

INCLUDES="?-isystem?$NDK_ROOT/sources/android/support/include"

PREFIX=./android/armeabi-v7a

./configure \

--prefix=$PREFIX \

--enable-small \

--disable-programs \

--disable-avdevice \

--disable-encoders \

--disable-muxers \

--disable-filters \

--enable-cross-compile \

--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \

--disable-shared \

--enable-static \

--sysroot=$NDKROOT/platforms/android-21/arch-arm \

--extra-cflags="$FLAGS $INCLUDES" \

--extra-cflags="-isysroot $NDKROOT/sysroot" \

--arch=arm \

--target-os=android?

make clean

make install


這個是生成的.a靜態(tài)庫 我本人比較喜歡用靜態(tài)庫?

也可以加上支持neon的配置

修改一下:

CFLAG="-I$PLATFORM/usr/include?-fPIC?-DANDROID?-mfpu=neon?-mfloat-abi=softfp?"

添加以下config

? ? --enable-asm?\

????--enable-neon?\

????--enable-jni?\

????--enable-mediacodec?\

????--enable-decoder=h264_mediacodec?\?

????--enable-hwaccel=h264_mediacmeodec


順便添加一下ffmpeg調(diào)用Android的mediacmeodec解碼

這個是注釋:

#--prefix : 安裝目錄

#--enable-small : 優(yōu)化大小

#--disable-programs : 不編譯ffmpeg程序(命令行工具),我們是需要獲得靜態(tài)(動態(tài))庫。

#--disable-avdevice : 關閉avdevice模塊,此模塊在android中無用

#--disable-encoders : 關閉所有編碼器 (播放不需要編碼)

#--disable-muxers :? 關閉所有復用器(封裝器),不需要生成mp4這樣的文件,所以關閉

#--disable-filters :關閉視頻濾鏡

#--enable-cross-compile : 開啟交叉編譯(ffmpeg比較**跨平臺**,并不是所有庫都有這么happy的選項 )

#--cross-prefix: 看右邊的值應該就知道是干嘛的,gcc的前綴 xxx/xxx/xxx-gcc 則給xxx/xxx/xxx-

#disable-shared enable-static 不寫也可以,默認就是這樣的。

#--sysroot:?編譯時指定了邏輯目錄

#--extra-cflags: 會傳給gcc的參數(shù)

#--arch --target-os : 不給不行

下面這個是我目前用的比較全的版本帶x264的

#!/bin/bash

NDK_ROOT=/home/dfh/android-ndk-r14b

CPU=arm-linux-androideabi

TOOLCHAIN=$NDK_ROOT/toolchains/$CPU-4.9/prebuilt/linux-x86_64

#從as的?externalNativeBuild/xxx/build.ninja

FLAGS="-isystem?$NDK_ROOT/sysroot/usr/include/arm-linux-androideabi?-D__ANDROID_API__=21?-g?-DANDROID?-ffunction-sections?-funwind-tables?-fstack-protector-strong?-no-canonical-prefixes?-march=armv7-a?-mfloat-abi=softfp?-mfpu=vfpv3-d16?-mthumb?-Wa,--noexecstack?-Wformat?-Werror=format-security??-O0?-fPIC"

INCLUDES="?-isystem?$NDK_ROOT/sources/android/support/include"


PREFIX=./android/armeabi-v7a

x264=/home/x264/armeabi-v7a

./configure?\

--prefix=$PREFIX?\

--enable-small?\

--disable-programs?\

--enable-cross-compile?\

--cross-prefix=$TOOLCHAIN/bin/$CPU-?\

--disable-shared?\

--enable-static?\

--sysroot=$NDK_ROOT/platforms/android-21/arch-arm?\

--extra-cflags="$FLAGS?$INCLUDES"?\

--extra-cflags="-isysroot?$NDK_ROOT/sysroot/"?\

--arch=arm?\

--target-os=android \

--disable-doc?\

--disable-ffmpeg?\

--disable-ffplay?\

--disable-ffprobe?\

--disable-postproc?\

--disable-avdevice?\

--disable-symver?\

--disable-stripping?\

--disable-programs?\

--enable-encoder=aac?\

--enable-libx264?\

--enable-gpl?\

--extra-cflags=?"$FLAGS-I$x264/include"?\

--extra-ldflags??"-L$x264\lib"?\

#?清理一下?

make?clean

#執(zhí)行makefile

make?install


對了我用的ffmpeg版本是4.0.2的

x264的庫是編譯好的靜態(tài)庫 ffmpeg是支持外部庫的




Android平臺下的音視頻教程(1)的評論 (共 條)

分享到微博請遵守國家法律
平安县| 敖汉旗| 吴江市| 沽源县| 藁城市| 柳州市| 蛟河市| 额敏县| 白水县| 永宁县| 抚松县| 博罗县| 宕昌县| 淳安县| 商丘市| 济源市| 鄄城县| 池州市| 衡山县| 嘉鱼县| 许昌市| 安福县| 长丰县| 新巴尔虎左旗| 东城区| 玛沁县| 德昌县| 调兵山市| 临猗县| 金昌市| 龙游县| 商南县| 法库县| 广西| 布拖县| 博客| 浦北县| 南汇区| 海林市| 肃宁县| 公主岭市|