當前位置:
首頁 > 最新 > NDK FFmpeg 編譯

NDK FFmpeg 編譯

閱讀本文大概需要 1.16 分鐘。

互聯網時代限制個人發展的不再是掌握知識和信息的多少,而是個人的認知水平。

本篇介紹一下 Linux 環境下 FFmpeg 的編譯。

前期推送的 NDK 開發系列文章:

1.FFmpeg 是什麼?

FFmpeg 全稱(First Forward MPEG),是一款領先的開源多媒體框架,採用 LGPL 或 GPL 許可證,除了具有音視頻編解碼功能外,還有視頻格式轉換、視頻抓圖、視頻水印、推流等功能。 FFmpeg 在 Linux 平台下開發,但它同樣也可以在其它操作系統環境中編譯運行,包括 Windows 、Mac OS X 等。

FFmpeg的官方網站是:http://ffmpeg.org/

Windows 平台下,編譯好的可用版本一般有三個: Static ,Shared ,Dev 。

Static 裡面有 3 個應用程序:ffmpeg.exe ,ffplay.exe ,ffprobe.exe ,動態鏈接庫都被編譯在 exe 文件中,每個 exe 的體積都很大,可直接運行,如播放一段視頻,命令行下執行:ffmpeg video.mp4。

Shared 裡面除了 3 個應用程序:ffmpeg.exe ,ffplay.exe ,ffprobe.exe 之外,還有一些動態鏈接庫,如 avcodec-54.dll 之類的,Shared 裡面的 exe 體積較小。

Dev 版本主要用於開發的,裡面包含了一些庫文件 xxx.lib 和文件 xxx.h 。

Linux 平台下,本文選擇的版本是 2.6.9,地址:http://ffmpeg.org/olddownload.html

2.編譯 FFmpeg

搭建 Linux 開發環境,安裝 Ubuntu 虛擬機或者租一個低配的阿里雲主機,文件傳輸工具推薦 FileZilla 或 XFTP 。

首先下載 Linux 環境下的 NDK (注意科學上網),如

android-ndk-r11c-linux-x86_64.bin。

執行如下命令進行解壓縮:

./android-ndk-r11c-linux-x86_64.bin

配置環境變數,首先編輯 .bashrc 文件。

vim ~/.bashrc

在文件結尾添加兩行代碼:

exportNDKROOT=( NDK 解壓的根目錄)如 、/usr/workspace/ndk/android-ndk-r11c

exportPATH=$NDKROOT:$PATH

更新環境變數:

source ~/.bashrc

下載 FFmpeg ,地址:

http://ffmpeg.org/olddownload.html

解壓:

uzip ffmpeg-2.6.9.zip

然後編寫用於編譯的 Shell 腳本,在 ffmpeg-2.6.9 根目錄下執行:vim build_android.sh

#!/bin/bash

make clean

exportNDK=/home/wuhuannan/Android/Sdk/ndk-bundle

exportSYSROOT=$NDK/platforms/android-14/arch-arm/

exportTOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

exportCPU=arm

exportPREFIX=$(pwd)/android/$CPU

exportADDI_CFLAGS="-marm"

./configure --target-os=linux

--prefix=$PREFIX--arch=arm

--disable-doc

--enable-shared

--disable-static

--disable-yasm

--disable-symver

--enable-gpl

--disable-ffmpeg

--disable-ffplay

--disable-ffprobe

--disable-ffserver

--disable-doc

--disable-symver

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

--enable-cross-compile

--sysroot=$SYSROOT

--extra-cflags="-Os -fpic$ADDI_CFLAGS"

--extra-ldflags="$ADDI_LDFLAGS"

$ADDITIONAL_CONFIGURE_FLAG

make clean

make

make install

然後修改根目錄下的 configure 文件。

#找到並注釋以下代碼

#SLIBNAME_WITH_MAJOR="$(SLIBNAME).$(LIBMAJOR)"

#LIB_INSTALL_EXTRA_CMD="$$(RANLIB) "$(LIBDIR)/$(LIBNAME)""

#SLIB_INSTALL_NAME="$(SLIBNAME_WITH_VERSION)"

#SLIB_INSTALL_LINKS="$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)"

#在上述代碼下方添加以下代碼

SLIBNAME_WITH_MAJOR="$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)"

LIB_INSTALL_EXTRA_CMD="$$(RANLIB)"$(LIBDIR)/$(LIBNAME)""

SLIB_INSTALL_NAME="$(SLIBNAME_WITH_MAJOR)"

SLIB_INSTALL_LINKS="$(SLIBNAME)"

修改文件許可權:

chmod +x build_android.sh configure

執行一下腳本開始編譯:

./build_android.sh

約幾分鐘後,編譯生成的動態庫文件如下:

後續我們將在 Android 環境下的音視頻編解碼中使用這些動態庫。

android-ndk-r10e-linux-x86_64.bin

回復ffmpeg獲取:

ffmpeg-2.6.9.zip

-- END --

迷茫的時候,選擇最難走的那條路

Copyright 2018 AndroidGeeks

本文由「135編輯器」提供技術支持

AndroidGeeks


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AndroidGeeks 的精彩文章:

TAG:AndroidGeeks |