关于c++:SkeyePlayer-rtsp播放器源码解析之64位编译方案

35次阅读

共计 1608 个字符,预计需要花费 5 分钟才能阅读完成。

SkeyePlayer 反对多路拉流播放,而拉流解码的过程须要占用系统资源,而咱们都晓得 32 位程序最多只能利用 4G 的内存,而当初动则 8G,16G 的内存空间是齐全不能被利用的;所以,为了充分利用内存资源,咱们筹备将 SkeyePlayer 改成 64 位版本。

  1. 新建 64 位编译平台
  2. 所有依赖库编译成 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 位

  3. 程序编译 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 将在近期公布。

正文完
 0