EasyPlayer rtsp播放器源碼解析之64位編譯方案

EasyPlayer支持多路拉流播放,而拉流解碼的過程需要佔用系統資源,而我們都知道32位程序最多隻能利用4G的內存,而現在動則8G,16G的內存空間是完全不能被利用的;所以,爲了充分利用內存資源,我們準備將EasyPlayer改成64位版本。

  1. 新建64位編譯平臺
    這裏寫圖片描述

  2. 所有依賴庫編譯成64位
    1> gpac庫編譯64位
    官網下載gpac源碼,通過cmake生成對應的VS版本,然後編譯64位平臺即可;
    2> libEasyAACEncoder庫編譯64位
    3> ffmpeg編譯64位
    ffmpeg可從官網下載源碼,通過交叉編譯或者cmake編譯64位;
    4> IntelHardCodec編譯64位
    5> SaveJPGDll庫編譯64位
    6> FFDecoder編譯64位
    7> D3DRender編譯64位
    這裏鄭重感謝Gavin大神百忙之中抽出時間幫忙編譯64位版本庫;
    8> EasyRTSPClient編譯64位

  3. 程序編譯64位併兼容32位調試
    程序編譯很簡單,指定編譯平臺,然後附加對應平臺的依賴項的頭文件和庫文件即可;
    通過本次編譯64位版本,遇到的幾個問題及注意事項:
    (1)程序依賴的DLL庫編譯64位的通過要注意其所依賴的庫(系統的或者第三方的)都要編譯的64位支持;
    (2)如果沒有源碼,由第三方提供的庫,如果需要兼容編譯,可以通過宏定義的方式解決,如:
#ifdef _WIN64
#include "D3DRender\include\x64\D3DRenderAPI.h"

#pragma comment(lib, "EasyRTSPClient/lib/x64/libEasyRTSPClient.lib")
#pragma comment(lib, "FFDecoder/lib/x64/EasyDecoder.lib")
#pragma comment(lib, "./D3DRender/lib/x64/D3DRender.lib")
#pragma comment(lib, "IntelHardCodec/lib/x64/IntelHardCodec.lib")
#pragma comment(lib, "libEasyAACEncoder/lib/x64/libEasyAACEncoder.lib")
// 增加MP4box和SaveJPG庫的支持 [9/20/2016 dingshuai]
// JPGSave
#pragma comment(lib, "SaveJPGDll/lib/x64/SaveJpgDll.lib")

#else
#include "D3DRender\include\x86\D3DRenderAPI.h"

#pragma comment(lib, "EasyRTSPClient/lib/x86/libEasyRTSPClient.lib")
#pragma comment(lib, "FFDecoder/lib/x86/EasyDecoder.lib")
#pragma comment(lib, "D3DRender/lib/x86/D3DRender.lib")
#pragma comment(lib, "IntelHardCodec/lib/x86/IntelHardCodec.lib")
#pragma comment(lib, "libEasyAACEncoder/lib/x86/libEasyAACEncoder.lib")
// 增加MP4box和SaveJPG庫的支持 [9/20/2016 dingshuai]
// JPGSave
#pragma comment(lib, "SaveJPGDll/lib/x86/SaveJpgDll.lib")
#endif

目前x64的系統已廣泛使用,未來主流程序都應該是64位的,爲了充分利用內存資源,也建議大家都將目前的32位程序升級成64位;最新兼容64和32位的EasyPlayer將在近期發佈。

發佈了48 篇原創文章 · 獲贊 31 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章