FFMPEG for android 編譯

標籤(空格分隔): FFMPEGlinux


最近在研究Android視頻播放功能,網上有不少關於視頻播放解碼的庫,可是做爲程序員的我,仍是但願能從源頭出發,學習FFMPGE天然是勢在必行了。android

網上有關FFMPGE學習的文章有不少,可是對於初學者而言,看的時候彷佛總有一點不知因此然感受,本人也是其中一個。再此,做爲一個初學者,咱們須要按着怎樣的步驟來學習FFPEG呢?本系列文章就來一塊兒記錄一下,初學者探索FFMPEG的歷程,一點一滴的走向通往大神之路。git

本片文章,個人計劃是這樣的,程序員

  1. 編譯出ffmpeg能夠爲Android使用動態連接庫
  2. Android studio創建jni工程使用動態連接庫
  3. 使用動態連接庫實現一個簡單的視頻播放

在作上面的功能的時候,做爲初學者,咱們須要有的基礎知識是:linux基本功,C語言的基本功,JNI的基本功,Android的基本功,我相信,本篇文章的人,這些基本功,大多數都已經具有了。bash

在完成上面的功能的時候,若是你從未接觸過ffmeg,或者對linux不熟悉,也不一樣擔憂,你徹底能夠不求甚解的按着個人步驟一步一步的進行下去,咱們的目的是先把效果實現,而後在對每個功能過程逐步展開,到那時,你就會發現本身的不足,在惡補也不遲,正如咱們學一門語言的時候,總要先搞一個hello world,這案例就是咱們的hello wrold.ide

好了閒話很少扯了,先完成第一個 準備材料:學習

  1. Ubuntu ,我這裏用的是16.04
  2. VMware 12.0,若是你的電腦裝的就是Ubuntu這個就能夠不用了,這裏我使用的是虛擬機安裝的。
  3. NDK linux 版本,這裏我用的是ndk-r13;
  4. 下載ffmpeg ,這裏我下載的是最新的版本,你根據本身的選擇就好了

有了以上的材料,咱們的工做就是,在Ubuntu上配置NDK,至於如何配置呢?很簡單。打開終端輸入一下命令ui

sudo gedit /etc/profile

而後在文件中配置:搜索引擎

export NDK_HOME=/home/sivin/programs/android-ndk-r13 //這裏替換成你的ndk存放路徑
export PATH=$NDK_HOME=:$PATH

下載ffmpeg,這個咱們能夠直接在搜索引擎上搜索ffmpeg,進入官網裏面提供了不少版本的下載,這裏咱們使用的是linuxgit的方式,固然你也能夠下載壓縮包,而後解壓也行,我的喜愛。idea

下面的工做就是編譯ffmpeg了,咱們在ffmepg的根目錄下,新建build_android.sh 而後在文件中寫入:

#!/bin/bash
make clean
export NDK=你的NDK路徑
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_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

而後執行這個文件

./build_android.sh

而後靜靜等待編譯就行了, 編譯完成以後,咱們會發現,這個目錄下多了一個名爲android的目錄,裏面存放的就是咱們想要的動態連接庫和頭文件。

相關文章
相關標籤/搜索