嗨~,大家好!
我叫石頭~
mac 上編譯FFMpeg4.0.2
親自測(cè)試可以用,可以放心的往下讀~~~~
編譯環(huán)境
選擇自己系統(tǒng)對(duì)應(yīng)的ndk
環(huán)境變量配置
命令行中配置:
- 輸入
vim ~/.bash_profile
或者open ~/.bash_profile
- 加入
// /Users/shitou/Downloads/android-ndk-r16b 換成你自己的r16b的路徑
// 命令行進(jìn)入r16b的文件夾,輸入pwd,復(fù)制路徑
export NDK_HOME=/Users/shitou/Downloads/android-ndk-r16b
export PATH=$PATH:$NDK_HOME/
- 等等還有第三步呢,輸入
source ~/.bash_profile
使環(huán)境生效
編譯腳本
強(qiáng)調(diào)下 下面的腳本是沒(méi)有開(kāi)啟neon跟硬解碼的
- 創(chuàng)建一個(gè)文件比如
ffmpeg-build.sh
, 復(fù)制粘貼下面的內(nèi)容
記得修改自己的 ndk路徑 , 編譯之后輸入的目錄
#!/bin/bash
ADDI_CFLAGS="-marm"
API=27
PLATFORM=arm-linux-androideabi
CPU=armv7-a
NDK=/Users/shitou/Documents/android-ndk-r16b # 修改自己本地的ndk路徑
SYSROOT=$NDK/platforms/android-$API/arch-arm/
ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/$PLATFORM
TOOLCHAIN=$NDK/toolchains/$PLATFORM-4.9/prebuilt/darwin-x86_64
OUTPUT=/Users/cvte/Documents/share #自己指定一個(gè)輸出目錄
function build_one
{
./configure \
--prefix=$OUTPUT \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic -marm" \
--extra-ldflags="-marm" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
echo "開(kāi)始編譯ffmpeg..."
build_one
echo "完成編譯..."
-
把
ffmpeg-build.sh
放入ffmpeg4.0.2
文件夾中
修改編譯腳本的權(quán)限 比如
ffmpeg-build.sh
// 命令行進(jìn)入ffmpeg4.0.2文件夾
chmod 777 ffmpeg-build.sh
- 執(zhí)行
./ffmpeg-build.sh
5.編譯完成之后會(huì)出現(xiàn):
目錄所在地:
好了,到這里應(yīng)該大家都編譯成功了吧.
接下來(lái)我們應(yīng)該是講怎么導(dǎo)入生成的這些文件進(jìn)入Android studio,不過(guò)先不急,讓我們
先說(shuō)說(shuō)4.x.x
跟之前3.x.x
的區(qū)別,不然等下你用之前的代碼第一句就有問(wèn)題,哈哈~~,先聽(tīng)我嘮叨嘮叨.
我們可能看之前的博客,第一句代碼就是
//注冊(cè)所有封裝器 -- 4.x以上廢棄
av_register_all();
結(jié)果發(fā)現(xiàn)
attribute_deprecated
void av_register_all(void);
與此同時(shí),解碼器的注冊(cè)函數(shù)也廢棄掉了
//注冊(cè)所有的解碼器 -- 4.x以上廢棄
avcodec_register_all();
所有說(shuō)4.x的版本版本跟3.x還有一些不同的,
這些注冊(cè)函數(shù)都不需要我們手動(dòng)調(diào)用了,組件可以直接用
但是我們?cè)趺床檎夷男┓椒ㄓ斜粡U棄,或者被替代呢?
在我們從官網(wǎng)下載下來(lái)的ffmpeg4.0.2
文件夾中,找到doc
文件夾,里面有個(gè)APIchanges
的文件,用編輯器打開(kāi),我們就能發(fā)現(xiàn)在這個(gè)版本里面的api變更.
現(xiàn)在我們就能對(duì)比跟之前的版本,哪些api有變化了.
接下來(lái)進(jìn)入Android studio集成ffmpeg的部分.