1. 程式人生 > >Mac下編譯OpenH264 for android

Mac下編譯OpenH264 for android

簡介

OpenH264 是思科的開源專案,可以編碼解碼H264,常見的H264編碼器還有x264專案。
由於OpenH264專案的文件較少,初學的門檻較高,所以整理一些文章來幫忙初學者入門。

系列文章包括:
編譯OpenH264 for Windows
編譯OpenH264 for Android
編譯OpenH264 for iOS
編譯OpenH264 for Windows Phone
OpenH264編碼示例
OpenH264解碼示例
OpenH264專案結構

編譯環境

Mac OS X 10.12.5 x86_64
Android Studio v2.2.3
Android NDK r10b
注:Android Studio自帶的 SDK 中 SDK Tools 版本必須小於等於 25.2.5


Apache Ant v1.10
NASM v2.10.07
注:NASM 版本必須小於等於 2.10.07

安裝過程

OpenH264 官網有簡要的編譯說明,只是其中有不周全的地方;

安裝 Android Studio

安裝 nasm

安裝 ant

使用 brew 命令列安裝,命令如下

brew install ant

設定環境變數

在命令列中設定環境變數

export PATH=$PATH:ANDROID_SDK/tools
export PATH=~/app/nasm:$PATH

注:把 ANDROID_SDK 替換為真實的 SDK 完整路徑


注:Mac 自帶有 nasm,因此 export 時,新下載的 nasm 路徑在放在 $PATH 前面,以覆蓋原版本

下載 OpenH264 原始碼

從官網下載 OpenH264 原始碼,並解壓到 ~/openh264

編譯 OpenH264

在命令列中,執行以下命令

cd ~/openh264
# armeabi
make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=arm NDKLEVEL=21 APP_ABI=armeabi clean
make OS=android NDKROOT=$NDK TARGET=android-21
ARCH=arm NDKLEVEL=21 APP_ABI=armeabi # armeabi-v7a make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=arm NDKLEVEL=21 clean make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=arm NDKLEVEL=21 # arm64-v8a make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=arm64 NDKLEVEL=21 clean make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=arm64 NDKLEVEL=21 # x86 make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=x86 NDKLEVEL=21 clean make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=x86 NDKLEVEL=21 # x86_64 make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=x86_64 NDKLEVEL=21 clean make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=x86_64 NDKLEVEL=21 # mips make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=mips NDKLEVEL=21 clean make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=mips NDKLEVEL=21 # mips64 make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=mips64 NDKLEVEL=21 clean make OS=android NDKROOT=$NDK TARGET=android-21 ARCH=mips64 NDKLEVEL=21

注:把 ANDROID_NDK 替換為真實的 NDK 完整路徑
注:Android NDK 從 level21 開始支援 64位架構,因此 TARGET 低於 android-21 的將無法編譯 arm64、x86_64、mips64 庫
注:官方已經註明 mips、mips64 兩種架構未做優化處理,不建議使用

OpenH264 生成檔案

生成的檔案位於 ~/openh264 目錄下,共計5個靜態庫,1個動態庫
libcommon.a
libdecoder.a
libencoder.a
libopenh264.a
libprocessing.a
libopenh264.so

使用方法

參見OpenH264編碼示例、OpenH264解碼示例兩篇文章;