一步步實現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系列文章之七——終結篇(附源碼)html
ijkplayer使用了ffmpeg 3.4 release(接下來將此版本ffmpeg叫作ijkplayer-ffmpeg),ijkplayer fork版本最後一個官方的commit詳細信息以下:android
提交: 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。git
ijkplayer-ffmpeg fork自 官方的ffmpeg,ijkplayer-ffmpeg能夠提交pull request到官方ffmpeg,這不是咱們本身能控制的。網上搜索了相關的資料,git如此強大,能夠對兩個fork的branch進行『移花接木』,現將過程記錄以下:github
在本地將ijkplayer-ffmpeg倉庫clone下來:windows
https://github.com/Bilibili/FFmpeg.git
跳轉到ijkplayer-ffmpeg 根目錄:源碼分析
cd root_path_of_ijkplayer-ffmpeg
將ijkplayer指定的tag檢出。post
git checkout ff3.4--ijk0.8.7--20180103--001 -B ijkplayer
刪除本地倉庫的origin部分:fetch
git remote rm origin
將官方ffmpeg origin添加到本地ijkplayer-ffmpeg:.net
git remote add origin https://github.com/harlanc/FFmpeg.git
重命名本地branch ijkplayercode
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便可。
將merge後的branch拷貝到windows環境中,同前面介紹的編譯ffmpeg4.0.2同樣進行編譯,發現ijkplayer更新的ffmpeg代碼存在很多問題,有一些bug,也有的缺失了windows部分的代碼,作了一些改動,也有可能有問題,但最後編譯經過了(具體能夠看個人github)。ijkplayer-ffmpeg的android平臺下,最終ffmpeg部分是生成了一個so動態庫,libijkffmpeg.so,並且這個庫還很小。使用ffmpeg的configure編譯出來後是不少的dll和lib,想像ijkplayer同樣將須要的.o文件打包成一個動態庫,最後沒有成功,先繼續往前走吧,最關鍵的部分還沒到,朝目標又近了一步,加油。