SkeyePlayer反对多路拉流播放,而拉流解码的过程须要占用系统资源,而咱们都晓得32位程序最多只能利用4G的内存,而当初动则8G,16G的内存空间是齐全不能被利用的;所以,为了充分利用内存资源,咱们筹备将SkeyePlayer改成64位版本。
- 新建64位编译平台
所有依赖库编译成64位
1> gpac库编译64位官网下载gpac源码,通过cmake生成对应的VS版本,而后编译64位平台即可;
2> libSkeyeAACEncoder库编译64位
3> ffmpeg编译64位ffmpeg可从官网下载源码,通过穿插编译或者cmake编译64位;
4> IntelHardCodec编译64位
5> SaveJPGDll库编译64位
6> FFDecoder编译64位
7> D3DRender编译64位这里郑重感激Gavin大神百忙之中抽出工夫帮忙编译64位版本库;
8> SkeyeRTSPClient编译64位
- 程序编译64位并兼容32位调试
程序编译很简略,指定编译平台,而后附加对应平台的依赖项的头文件和库文件即可;
通过本次编译64位版本,遇到的几个问题及注意事项:
(1)程序依赖的DLL库编译64位的通过要留神其所依赖的库(零碎的或者第三方的)都要编译的64位反对;
(2)如果没有源码,由第三方提供的库,如果须要兼容编译,能够通过宏定义的形式解决,如:
#ifdef _WIN64#include "D3DRender\include\x64\D3DRenderAPI.h"#pragma comment(lib, "SkeyeRTSPClient/lib/x64/libSkeyeRTSPClient.lib")#pragma comment(lib, "FFDecoder/lib/x64/SkeyeDecoder.lib")#pragma comment(lib, "./D3DRender/lib/x64/D3DRender.lib")#pragma comment(lib, "IntelHardCodec/lib/x64/IntelHardCodec.lib")#pragma comment(lib, "libSkeyeAACEncoder/lib/x64/libSkeyeAACEncoder.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, "SkeyeRTSPClient/lib/x86/libSkeyeRTSPClient.lib")#pragma comment(lib, "FFDecoder/lib/x86/SkeyeDecoder.lib")#pragma comment(lib, "D3DRender/lib/x86/D3DRender.lib")#pragma comment(lib, "IntelHardCodec/lib/x86/IntelHardCodec.lib")#pragma comment(lib, "libSkeyeAACEncoder/lib/x86/libSkeyeAACEncoder.lib")// 减少MP4box和SaveJPG库的反对 [9/20/2016 dingshuai]// JPGSave#pragma comment(lib, "SaveJPGDll/lib/x86/SaveJpgDll.lib")#endif
目前x64的零碎已宽泛应用,将来支流程序都应该是64位的,为了充分利用内存资源,也倡议大家都将目前的32位程序升级成64位;最新兼容64和32位的SkeyePlayer将在近期公布。