FFmpeg編譯Android版本

来源:http://www.cnblogs.com/jokerjoke/archive/2017/09/12/7509848.html
-Advertisement-
Play Games

FFmpeg是很好用的一個音視頻庫,功能強大,但是用起來並不是很方便。之前一直不想用FFmpeg,因為感覺編譯太麻煩,但是到了不得不用的時候了,沒辦法,參考了網上大神的方法,在這裡自己也記錄一下方便以後再次查看。 一、環境 Ubuntu14.04 二、NDK環境配置 NDK下載鏈接:https:// ...


FFmpeg是很好用的一個音視頻庫,功能強大,但是用起來並不是很方便。之前一直不想用FFmpeg,因為感覺編譯太麻煩,但是到了不得不用的時候了,沒辦法,參考了網上大神的方法,在這裡自己也記錄一下方便以後再次查看。

 

一、環境

        Ubuntu14.04

 

二、NDK環境配置

        NDK下載鏈接:https://developer.android.google.cn/ndk/downloads/index.html

        下載完後解壓到任意路徑即可,然後Alt+T打開終端執行以下命令,其中NDK_HOME的值改為你自己的NDK路徑

      

export NDK_HOME=/home/y/adm/software/android-ndk-r14b
export PATH=$NDK_HOME:$PATH

 

三、FFmpeg源碼下載及配置

        FFmpeg下載地址:http://www.ffmpeg.org/download.html

        一樣解壓到任意路徑,然後找到解壓後目錄中的/ffmpeg-3.3.4/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)'

 

四、編譯

        在FFmpeg根目錄新建一個空文檔,改名為:build.sh

        在其中寫入以下內容:

        其中有些地方需要修改

        1、TMPDIR=為臨時目錄,自己新建一個,把路徑寫在這裡

        2、NDK=你自己的NDK路徑

        3、SYSROOT=編譯時的platform版本,根據需要自己選擇一個版本

        4、TOOLCHAIN=這裡主要還是前邊部分的NDK路徑需要修改為你自己的

        5、PREFIX=編譯後的so等文件的生成路徑,自己新建一個文件夾,把路徑寫在這裡

#!/bin/bash
export TMPDIR=/home/y/adm/software/ffmpeg/tmpdir
NDK=/home/y/adm/software/android-ndk-r14b
SYSROOT=$NDK/platforms/android-16/arch-arm/
TOOLCHAIN=/home/y/adm/software/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=arm
PREFIX=/home/y/adm/software/ffmpeg/result/
ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--enable-small \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one

 

       

修改完後打開終端,切換到FFmpeg根目錄,執行:
sh build.sh

 

大概需要幾分鐘,等待編譯結果。
編譯完成後,打開PREFIX指定的目錄,其中有include和lib兩個文件夾,刪除lib文件夾中的pkgconfig文件夾和so的鏈接文件,此時該文件夾中應只剩so庫,餘下的include和lib就是開發需要的文件了

 

PS:在編譯最後出現了這麼一句話:

build.sh: 35: build.sh: build_one: not found

 


但是編譯結果好像是正常的,反正是sh文件的最後一句了,應該不影響結果

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 封面預覽 前言 使用百度貼吧客戶端的時候發發現載入的小動畫挺有意思的,於是自己動手寫寫看。想學習自定義View以及自定義動畫的小伙伴一定不要錯過哦。 讀者朋友需要有最基本的canvas繪圖功底,比如畫筆Paint的簡單使用、Path如何畫直線等簡單的操作,不熟悉也沒關係,下文帶大家擼代碼的時候會簡單 ...
  • 數組的介紹 數組的介紹 數組(Array)是一串有序的由相同類型元素構成的集合,數組中的集合元素是有序的,可以重覆出現。在Swift中數組類型是Array,是一個泛型集合。數組分成:可變數組和不可變數組,分別使用let修飾的數組是不可變數組,使用var修飾的數組是可變數組。 數組的初始化 數組的初始 ...
  • 5種android對話框1 彈出普通對話框 系統更新2 自定義對話框-- 用戶登錄3 時間選擇對話框 -- 時間對話框4 進度條對話框 -- 信息載入..5 popuWindow對話框 1 彈出普通對話框 系統更新 [csharp] view plain copy //彈出普通對話框 public  ...
  • 效果 源碼 https://github.com/YouXianMing/Animations 特點 1. 每一個row都可以像使用UITableView的cell一樣可以定製,繼承CustomPickerView即可 2. 數據源通過PickerViewDataAdapter來指定,每一個Pick ...
  • iOS精選源碼 iOS優質博客 首先你要花點時間針對objective-c語言的學習;畢竟這個是iOS開發的基礎(你也可以嘗試用Swift,但此項目只是針對OC),編程套路其實都是差不多,多寫多想多實踐;關於環境的搭建就不在本文進行介紹,這部分內容可以自行百度或谷歌,都有相應的說明;對於一個剛入門總 ...
  • 一、編譯生成FFmpeg的頭文件和so庫 如果不知道怎麼做可以看這裡:http://blog.csdn.net/qsw15923/article/details/77943515 二、新建項目 在新建時勾選下方的include C++support,然後一路下一步即可 創建完項目後如果之前沒有配置N ...
  • 【新版】Android技術博客精華彙總(原文鏈接內持續更新) http://www.apkbus.com/thread-313856-1-1.html Kotlin Kotlin學習資料彙總 http://www.apkbus.com/blog-261991-68033.html 使用Kotlin來 ...
  • Android精選源碼 Android優質博客 從零開始搭建一個項目(rxJava+Retrofit+Dagger2) 下http://www.apkbus.com/blog-873057-72599.htmltip:本文所使用到的技術有 RxJava,Retrofit,Glide,Dagger2, ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...