當前位置:首頁 » 安卓系統 » ffmpegforandroid編譯

ffmpegforandroid編譯

發布時間: 2023-08-08 05:33:04

① 如何將FFmpeg源碼編譯一個so庫

我們從上篇文章 FFmpeg編譯 知道,正常打出來的有5個so包,當然有它的好處是按需引入。但是如果都需要,那是不是覺得很多呢?那可不可以打出一個so呢?答案是當然可以,下面以armv7-a平台為例,腳本如下。

其實在上篇 FFmpeg編譯 中腳本的基礎上添加如下即可打出一個so包:

編譯完成大概需要幾分鍾。

android/armv7-a下生成一個ffmpeg.so

libffmpeg.so及相應的同文件到工程里就好

② Ubuntu 環境 編譯 ffmpeg移植android 的問題!

到FFmpeg官方網站http://www.ffmpeg.org/上去下載源代碼,這里下載的源代碼是最權威的。進入官網之後,選擇」Download」進入下載頁面,截止2014年3月28日止,最新的發布的穩定版本為FFmpeg2.2,代號」Muybridge」。選擇該下方的」Downloadgzip tarball」進行下載,下載後的文件名為ffmpeg-2.2.tar.gz,大約8.3M。
第二步:在linux環境下編譯FFmpeg
在Windows平台可以採用VMplayer虛擬機上安裝ubuntu的方式,本人也是採用這種方式。
本文以/home/dennis為根目錄進行操作和說明:
將ffmpeg-2.2.tar.gz拷貝至根目錄,然後執行如下解壓命令將其解壓:
$tar zxf ffmpeg-2.2.tar.gz
解壓後將得到/home/dennis/ffmpeg-2.2目錄。

③ 如何把ffmpeg移植到android

1
首先把系統環境配置好,一般情況系統默認都會安裝gcc和make編譯工具。若提示未安裝編譯工具,請使用sudo apt-get install build-essential安裝即可。
2
修改編譯後庫的版本號,在ffmpeg目錄下找到configure文件,將下圖所示的4行代碼修改為
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

3
將以下代碼保存到build.sh中

#!/bin/bashNDK=/home/robot/tools/android-ndk-r8eSYSROOT=$NDK/platforms/android-14/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64
function build_ffmpeg{./configure \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --disable-doc \ --disable-ffserver \ --enable-cross-compile \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=linux \ --arch=arm \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG}PREFIX=$(pwd)/androidADDI_CFLAGS="-marm"build_ffmpeg
4
使用命令修改build文件的屬性
chmod a+x build.sh
5
接下來就是執行build.sh文件,"."表示當前目錄
./build.sh
執行成功後,會生成config.h配置文件
6
開始編譯,
make
make install
執行成功會在Android目錄下生成一系列目錄,bin、include、lib、share,生成的庫就在lib目錄下

④ 如何使用ndk編譯ffmpeg靜態庫

如何使用ndk為ffmpeg編譯rtmp+polarssl靜態庫?這個問題花了我整整一天時間。其中遇到很多小問題,這里記錄一下,方便自己也方便其他人。

1、編譯polarssl,查看其Readme文件即可,不需要configure,只需要make時帶上必要的參數即可,不過要記得在每一次執行make命令時都帶上CC的參數(指向你的arm gcc),因為我試過在make install時沒有帶上CC的參數,雖然能編譯出polarssl但是未能正確被rtmp引用到。

2、因為前面我用的polarssl是當前最新(1.3.7)版本,而librtmp使用的好像是polarssl1.0.0以下版本的api,所以需要修改rtmp部分源碼,讓其調用新版polarssl的api,這里的修改可以參照《Migrating from PolarSSL-1.2 to the PolarSSL 1.3 branch》和《[rtmpmp] branch master updated. a312ac7 Fix compat with PolarSSL >= 1.1.0》。

3、出現 undefined reference to `havege_random』錯誤,這里是因為polarssl默認關閉了havege模塊,需要你手動開啟,主要就是修改include/polarssl/config.h,去掉POLARSSL_HAVEGE_C前的注釋,也就是要定義POLARSSL_HAVEGE_C,如下:
#define POLARSSL_HAVEGE_C

4、在編譯出上面兩個庫之後,可以開始編譯ffmpeg(2.1.1版本)了,如果遇到下面的問題 check_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
ERROR: librtmp not found
這里有三種解決方法:
第一種,因為是網路上傳播最多的,算是比較簡便的方法,就是修改ffmpeg的configure,將以下一行:
enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
改為:
enabled librtmp && require librtmp librtmp/rtmp.h RTMP_Socket -lrtmp -lpolarssl -lz
或者直接注釋掉&& *** 部分,然後再自己加上librtmp的庫路徑也行

第二種,(比較推薦,因為解決了這個會順帶解決大部分找不到庫的錯誤!)因為這里使用了pkg-config工具查找庫,而這個工具ndk並沒有附帶提供,而出現check_pkg_config相關錯誤的話,只要稍加註意,會發現在使用configure配置ffmpeg的交叉編譯時,已經有相應的pkg-config不存在的警告了。我對這個工具不熟悉,所以我只是簡單地加上了一個軟鏈接到系統的pkg-config,如下:
ln -s /usr/bin/pkg-config /home/cidy0106/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-pkg-config
這個時候重新configure的話可能會出現找不到polarssl庫的錯誤提示,需要修改一下librtmp安裝目錄里的librtmp.pc,把以下內容:
Libs: -L${libdir} -lrtmp -lz
改為:
Libs: -L${libdir} -lrtmp -lz -lpolarssl

至此,就可以正確編譯出ffmpeg了
轉載

⑤ 如何用Android NDK編譯FFmpeg

Android NDK編譯FFmpeg可以採用cygwin方法來實現。

具體步驟:

  1. 首先是config腳本,編譯ffmpeg之前必須得先configure一下,configure是一個shell腳本,根據命令行參數不同來裁剪模塊,生成特定的config.h文件。

  2. confiure腳本文件在ffmpeg目錄里可以找到。

  3. 重新建立以個shell腳本文件config.sh,這個文件只是為了編譯方便。

  4. 例子:

注意:

編寫config腳本時候,其中的路徑需要使用windows形式的路徑,不能使用/cygwindriver/d/android 這種格式的路徑。

熱點內容
linux嵌入式書籍 發布:2025-02-04 03:44:07 瀏覽:331
sql分組最後一條 發布:2025-02-04 03:38:24 瀏覽:269
單宮數字奇門演算法 發布:2025-02-04 03:33:57 瀏覽:861
文件夾盒子 發布:2025-02-04 03:33:05 瀏覽:109
python教案 發布:2025-02-04 03:10:38 瀏覽:798
怎麼編程套料 發布:2025-02-04 02:50:31 瀏覽:208
副編譯 發布:2025-02-04 02:05:25 瀏覽:613
解壓按摩師 發布:2025-02-04 01:21:31 瀏覽:424
linuxssh限制 發布:2025-02-04 01:20:40 瀏覽:697
腳本式是什麼 發布:2025-02-04 01:06:24 瀏覽:248