一步步實現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版ijkplayer系列文章之七——終結篇(附源碼)
ijkplayer windows版本的移植工作終於有了一些進展,起初自己做這個項目是因為公司有可能會用到,於是用業余時間慢慢熟悉相關知識和ijkplayer的代碼。現在應該是用不到了,到這里做一個總結吧,最終能夠達到的效果是是能夠在windows上用OpenGL ES渲染視頻和用OpenAL播放聲音,但是還有音畫不同步的問題,以后有時間的話再去解決。各位如果有想學習音視頻渲染的可以參考我的代碼相互交流學習。
下面是編譯源碼的說明文檔,如果有任何問題可以通知我。
編譯環境
- MinGW32
- WIN7
- Visual Studio 2017
MinGW32環境的搭建可以參考之前的帖子
准備工作
編譯ijkplayer-ffmpeg
ijkplayer使用的ffmpeg直接拿來在windows上編譯會出錯,需要merge官方ffmpeg的最新代碼,可以看之前的帖子。merge后的代碼push到了github上。
將代碼clone到MInGW_root_path/msys/1.0/home/Admistrator/下面
git clone https://github.com/harlanc/FFmpeg.git
將ijkplayer branch checkout下來:
git checkout origin/ijkplayer -b ijkplayer
configure
$ ./configure --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl --enable-debug=3 --disable-optimizations --disable-mmx --disable-s tripping
make && make install
make && make install
- 注意編譯ijkplayer-windows的時候會找一個<libffmpeg/config.h>的頭文件,這個文件如果在ijkplayer-ffmpeg/build目錄下沒有,自己新建一個文件夾libffmpeg,把ijkplayer-ffmpeg/build下面的config.h拷貝過去即可。
編譯Angle庫
clone到本地
git clone https://github.com/Microsoft/angle.git
調用批處理生成sln文件然后用Vistual Studio編譯生成以下3個dll:
- d3dcompiler_47.dll
- libEGL.dll
- libGLESv2.dll
具體流程參考微軟的官方文檔
將上面三個dll拷貝到 MInGW_root_path/msys/1.0/local/bin下面
編譯ijkplayer-windows
clone代碼到本地
git clone https://github.com/harlanc/ijkplayer-windows.git
- 注意:一定要把ijkplayer-windows和前面的ijkplayer-ffmpeg這兩個工程放在同一個目錄下,不然編譯ijkplayer-windows的時候會找不到ffmepg的頭文件
將ijkplayer-windows branch checkout下來:
git checkout origin/ijkplayer-windows -b ijkplayer-windows
將Angle代碼庫下面的include文件夾拷貝到ijkplayer-windows/ijkmedia/ijksdl 下面。
到ijkplayer-windows/ijkmedia目錄下執行configure命令:
./configure
執行make&& make install
make && make install
執行
最后會在ijkplayer-windows/ijkmedia/ijkplayer/windows/.libs 下面生成winplayer.exe可執行文件。將視頻文件拷貝到此目錄下面,執行下面的命令播放:
./winplayer.exe test.mp4
附一個最終的效果圖:
已知問題
- 音畫不同步