編譯ijkplayer ffmpeg過程所遇到的坑

window環境(不推薦)

1、編譯前準備環境

cygwin+ndkr10e+sdk+git

2、ijkplayer源碼地址(使用版本爲0.8.8)

https://github.com/bilibili/ijkplayer

以上就是我編譯前所準備的環境

3、正式踩坑

坑1、源碼下載時間久(ijkplayer+ffmpeg大概下載一天,如果報錯可能不止) 

  git clone https://github.com/bilibili/ijkplayer.git 

由於只下載這部分代碼只能滿足http地址,而我想要支持rtsp,因此需要重新編譯ffmpeg,根據官網提示繼續執行下載源碼操作(./init-android.sh)

後面的過程我參考博客https://blog.csdn.net/qq372848728/article/details/62170288

git clone 慢我使用了網上找的的方法(但是好像沒什麼用~~~速度快了一點<~~>)

  • Windows上的hosts文件路徑在
  • C:\Windows\System32\drivers\etc\hosts
  • 199.232.5.194 github.global.ssl.fastly.Net
  • 140.82.114.4 github.com
  • 保存後刷新DNS  ipconfig /flushdns

 

  • linux上的hosts文件路徑 etc/hosts
  • 刷新DNS   sudo /etc/init.d/networking restart

還有一種是使用代理的方式下載(自行百度吧,我沒有用過)

中途採用過直接下載zip的方式,但是並沒有對應git的相關信息!沒辦法,最終還是花了一天時間下載成功,想想就心累呀

坑2、./compile-ffmpeg.sh armv7a  (爲了減少編譯量只編譯一個)

(1)cygwin環境有問題一直報

        IJK_NDK_REL=
        You need the NDKr10e or later

解決方法:

--1、有的環境下重新導入ndk後能通過----------export ANDROID_NDK=本地ndk路徑
--2、還是不行,重新安裝cygwin,當然卸載cygwin也是坑,找了半天採用下面方式卸載重裝成功  

卸載cygwin(手動刪除方式)
(1、rm -f /cygdrive/c/你的臨時文件夾(通過另一個ssh工具,如MobaXtrem)
(2、停止cron service (有可能會報錯,報錯就過濾這步)
         $ cygrunsrv --stop cron
         $ cygrunsrv --remove cron
(3、停止並刪除inetd服務
         $ net stop inetd
(4、刪除安裝文件夾,默認是c:\cygwin(有可能報某程序已經打開了一個文件,任務管理器中關閉對應的dash進程)
(5、刪除桌面上的icon,和開始菜單裏的啓動文件夾

(6、刪除註冊表裏的相關項
(HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions
(HKEY_CURRENT_USER\Software\Cygnus Solutions

(7、刪除環境變量(PATH, CYGWIN)環境變量PATH裏的c:\cygwin\bin; 還有名叫CYGWIN的變量

--3、在etc/profile中添加如下配置

export ANDROID_NDK=/media/sf_Android/android-ndk-r14b-linux-x86_64/android-ndk-r14b
export PATH=$ANDROID_NDK:$PATH
export ANDROID_SDK=/media/sf_Android/sdk
export PATH=${PATH}:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools

記得source一下資源,如果執行ndk-build -v 成功,則表示環境配置好了(這一步很重要)

VirtualBox:/# ndk-build -v
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu

-------------------------------------

(2)cygwin安裝不上make,一直報make找不到

解決辦法同上

如果cygwin官網下載慢的話,我這兒上傳了一份exe

坑3、ERROR: Failed to create toolchain

解決方法:ndk版本不對,目前支持r10-r14,替換ndk版本

坑4、下載的ffmpeg源碼格式爲dos格式

編譯時報錯:/ffbuild/pkgconfig_generate.sh:行2: $'\r': 未找到命令(類似的錯誤)

解決方法:轉換所有報錯文件find . -name "*.sh" | xargs sed -i 's/\r$//g'  (轉換所有sh腳本)

                 c文件和h文件等都可能會出現,改變腳本執行就好

坑5、執行./compile-ijk.sh all命令的時候一直通不過

ndk-build: 行 325: 45582 Segmentation fault      (核心已轉儲)$GNUMAKE -f $PROGDIR/build/core/build-local.mk

ndk編譯段錯誤

估計可能是前面ndk配置的環境還是沒對造成的,搞了好久,被逼無賴只能換種思路了,前面的幾個坑僅供部分技術參考

 

最後換了Linux編譯環境(強力推薦)

Ubuntu16.04+ndkr14b+sdk+git

這環境出奇的順利,首先按照上面說的第三種方式配置ndk環境後,按照github上的順序執行就好,沒有出現報錯,沒有報錯!!!!!

然後根據修改成功編譯出了支持rtsp格式的ijk庫(路徑ijkplayer\ijkplayer-armv7a\src\main\libs\armeabi-v7a)

最後編譯好的so文件,需要的可以自己下載

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章