日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

ffmpeg for android windows,windows10下编译ffmpeg for android

發布時間:2025/4/5 windows 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg for android windows,windows10下编译ffmpeg for android 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近實現了一款基于FFMpeg的支持多路視頻的實時流媒體播放器:https://github.com/huweijian5/RtspPlayer

有興趣能夠關注下。html

本文記錄在windows10下編譯ffmpeg的過程:java

環境:win10 ?ffmpeg-3.3?ndk-r14blinux

注意:通常來講低版本ndk編譯的能在高版本使用,但高版本ndk編譯的沒法在低版本使用,由于NDK平臺不是后向兼容的,而是前向兼容的,所以請根據實際狀況選擇ndk的版本。推薦使用app的minSdkVersion對應的編譯平臺。android

第一步:下載ffmpeg,我下載的是ffmpeg-3.3(下載地址:https://ffmpeg.org/download.html)git

在此處選擇basic setup,把右邊的都勾選(具體須要哪一個其實我也忘了,索性就都選了),而后點擊左上角的installation下拉菜單下的apply change進行下載安裝。windows

完成后配置環境變量:bash

以后在安裝目錄找到msys.bat并打開,后面會用到。app

第三步,找到ffmpeg目錄下的configure文件,將以下代碼(有人反饋說復制下面的代碼后每行末尾會多出兩個空格,發現確實如此,所以復制后須要手動去掉空格))ide

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)'

以下圖,這是由于android so命名的須要。

第四步,新建一個build_android.sh,里面的代碼以下:(有人反饋說復制下面的代碼后每行末尾會多出兩個空格,發現確實如此,所以復制后須要手動去掉空格)

#!/bin/bash

export TMPDIR=G:/ffmpeg/tmpdir

NDK=E:/androidstudio/sdk/ndk-bundle

SYSROOT=$NDK/platforms/android-18/arch-arm

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

CPU=arm

PREFIX=G:/ffmpeg/output/$CPU

ADDI_CFLAGS="-Os -fpic -marm"

function build_one

{

./configure \

--prefix=$PREFIX \

--enable-shared \

--enable-static \

--enable-asm \

--enable-neon \

--disable-doc \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-ffserver \

--disable-doc \

--disable-symver \

--enable-pthreads \

--enable-small \

--enable-jni \

--enable-mediacodec \

--enable-runtime-cpudetect \

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

--target-os=android \

--arch=arm \

--enable-cross-compile \

--sysroot=$SYSROOT \

--extra-cflags="$ADDI_CFLAGS" \

--extra-ldflags="$ADDI_LDFLAGS" \

$ADDITIONAL_CONFIGURE_FLAG

make clean

make

make install

}

build_one

read -p "Press any key to continue."

其中,

TMPDIR是個臨時目錄,編譯時須要用到,這個能夠隨意指定路徑,但必須保證路徑存在;

NDK則替換為你本機的ndk路徑;

SYSROOT根據你的本機設置,但不要大于你的target,好比你的target是22,就不要用 大于android-22的;

PREFIX則是編譯后so的存放地址,路徑能夠隨便指定。

--enable-shared:生成動態庫so

--disable-static:關閉靜態庫,默認生成的是靜態庫

關于參數的做用,能夠打開ffmpeg源碼目錄下的configure文件,里面都有對應的英文說明,舉個栗子:“--enable-mediacodec ? ? ?enable Android MediaCodec support [no]”

特別須要說明的是target-os,這個若是指定linux的話則須要執行第三步的文件修改,若是是android則能夠直接略過第三步,由于在configure文件中已經對target-os做了判斷,若是是android會幫咱們作相似于第三步的操做。

第五步,在剛剛打開的mingw中切換到ffmpeg路徑下,執行build_android.sh

在此過程當中

請檢查${MinGWDir}/msys/1.0/bin(默認為C:/MinGW/msys/1.0/bin)下有沒有pr.exe,若是沒有,那么在編譯libav過程當中,執行./configure會報錯:pr command not found。

下載coreutils-win32-5.3.0-bin.zip,解壓并將bin目錄下的內容拷貝到${MinGWDir}/msys/1.0/bin(默認為C:/MinGW/msys/1.0/bin)下。

附下載地址:http://gnuwin32.sourceforge.net/packages/coreutils.htm

其實這個pr command not found不用管它也能繼續執行下去。

第六步,漫長的等待后,若是在前面PREFIX指定的路徑下看到這兩個文件夾,那么恭喜你,終于編譯成功了。

常見問題解決:

1 編譯過程當中若是出現失敗,請到ffmpeg源碼目錄下找到config.log,里面末尾可能記錄了錯誤的緣由,根據里面的提示百度google自行解決便可。

2 FFMPEG編譯時出現ffmpeg yasm not found, use --disable-yasm for a crippled build

這是由于 FFMPEG為了提升編譯速度,使用了匯編指令,若是系統中沒有yasm指令的話,就會出現上述的問題。

解決辦法是:

A 若是是Windows系統,?從網上下載一個 yasm.exe(地址:http://yasm.tortall.net/Download.html,下載完后更名字為yasm.exe便可) 并放在mingw/bin下面,從新編譯,就不會出現該錯誤了;

B?若是是Linux系統,則更簡單,直接在終端輸入sudo apt-get install yasm?,安裝好后,從新編譯就 OK了。

參考:

http://blog.csdn.net/u011485531/article/details/55804380

總結

以上是生活随笔為你收集整理的ffmpeg for android windows,windows10下编译ffmpeg for android的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。