一步步實現windows版ijkplayer系列文章之一——Windows10平台編譯ffmpeg 4.0.2,生成ffplay
一步步實現windows版ijkplayer系列文章之二——Ijkplayer播放器源碼分析之音視頻輸出——視頻篇
一步步實現windows版ijkplayer系列文章之三——Ijkplayer播放器源碼分析之音視頻輸出——音頻篇
一步步實現windows版ijkplayer系列文章之四——windows下編譯ijkplyer版ffmpeg
一步步實現windows版ijkplayer系列文章之五——使用automake一步步生成makefile
一步步實現windows版ijkplayer系列文章之六——SDL2源碼分析之OpenGL ES在windows上的渲染過程
一步步實現windows版ijkplayer系列文章之七——終結篇(附源碼)
windows下編譯ijkplyer版ffmpeg
ijkplayer版本ffmpeg源碼說明
ijkplayer使用了ffmpeg 3.4 release(接下來將此版本ffmpeg叫做ijkplayer-ffmpeg),ijkplayer fork版本最后一個官方的commit詳細信息如下:
提交:
01e291a592452f27b3a4e811536aaaf94096e244 [01e291a]
父級:
03351cce88
作者:
Mark Thompson <sw@jkqxz.net>
日期:
2017年10月15日 GMT+8 下午7:45:15
ijkplayer團隊在此基礎上做了不少的改動,同時官方的3.4 release也在做更新,最近的一個3.4小版本release是3.4.4,時間在2018年7月18號。把ijkplayer的FFmpeg fork版本拿到windows下面編譯一直編譯不過,拿官方的3.4最新代碼卻能編譯成功,所以首先需要把兩個branch進行一下merge。
merge Ijkplayer-ffmpeg 到 ffmpeg3.4.4
ijkplayer-ffmpeg fork自 官方的ffmpeg,ijkplayer-ffmpeg可以提交pull request到官方ffmpeg,這不是我們自己能控制的。網上搜索了相關的資料,git如此強大,可以對兩個fork的branch進行『移花接木』,現將過程記錄如下:
-
github上將官方ffmpeg fork一份到自己的賬戶。
-
在本地將ijkplayer-ffmpeg倉庫clone下來:
https://github.com/Bilibili/FFmpeg.git -
跳轉到ijkplayer-ffmpeg 根目錄:
cd root_path_of_ijkplayer-ffmpeg -
將ijkplayer指定的tag檢出。
git checkout ff3.4--ijk0.8.7--20180103--001 -B ijkplayer -
刪除本地倉庫的origin部分:
git remote rm origin -
將官方ffmpeg origin添加到本地ijkplayer-ffmpeg:
git remote add origin https://github.com/harlanc/FFmpeg.git -
重命名本地branch ijkplayer
git branch -m ijkplayer-temp -
將更新后的遠端倉庫拉取到本地:
git fetch -
將官方ffmpeg的3.4.4版本檢出:
git checkout n3.4.4 -B ijkplayer -
最后將ijkplayer-temp merge到官方ffmpeg n3.4.4中:
git merge ijkplayer-temp
最終的結果沒有沖突,直接將代碼commit和push即可。
在WinGW中編譯ijkplayer-ffmpeg
將merge后的branch拷貝到windows環境中,同前面介紹的編譯ffmpeg4.0.2一樣進行編譯,發現ijkplayer更新的ffmpeg代碼存在不少問題,有一些bug,也有的缺失了windows部分的代碼,做了一些改動,也有可能有問題,但最后編譯通過了(具體可以看我的github)。ijkplayer-ffmpeg的android平台下,最終ffmpeg部分是生成了一個so動態庫,libijkffmpeg.so,而且這個庫還很小。使用ffmpeg的configure編譯出來后是很多的dll和lib,想像ijkplayer一樣將需要的.o文件打包成一個動態庫,最后沒有成功,先繼續往前走吧,最關鍵的部分還沒到,朝目標又近了一步,加油。
