在软件开发中,不管是个人还是企业,软件版本的控制都是一件重要的事,没有版本控制系统的话,代码可能会被覆盖或遗失,也有可能被外人篡改,无法恢复到原本的代码。
有了版本控制系统,开发人员只要将每次的代码变更都记录起来留档,并且可以通过版本控制系统中进行更新,也可以通过浏览所有开发的历史纪录,掌握团队的开发进度。
本文介绍下TSINGSEE青犀视频自主研发的H265视频播放器EasyPlayerPro-Win如何获取版本信息源码。EasyPlayerPro-Win C++软件版本信息定义如下,当前版本为3.2.19.106。
有时版本信息不会显示,则需要调取以下代码:
void CLivePlayerDlg::GetApplicationVersion(wchar_t *pVersion)
{
TCHAR szFullPath[MAX_PATH];
DWORD dwVerInfoSize = 0;
DWORD dwVerHnd;
VS_FIXEDFILEINFO * pFileInfo;
GetModuleFileName(NULL, szFullPath, sizeof(szFullPath));
dwVerInfoSize = GetFileVersionInfoSize(szFullPath, &dwVerHnd);
if (dwVerInfoSize)
{
// If we were able to get the information, process it:
HANDLE hMem;
LPVOID lpvMem;
unsigned int uInfoSize = 0;
hMem = GlobalAlloc(GMEM_MOVEABLE, dwVerInfoSize);
lpvMem = GlobalLock(hMem);
GetFileVersionInfo(szFullPath, dwVerHnd, dwVerInfoSize, lpvMem);
::VerQueryValue(lpvMem, TEXT("\"), (void**)&pFileInfo, &uInfoSize);
int ret = GetLastError();
WORD m_nProdVersion[4];
// Product version from the FILEVERSION of the version info resource
m_nProdVersion[0] = HIWORD(pFileInfo->dwProductVersionMS);
m_nProdVersion[1] = LOWORD(pFileInfo->dwProductVersionMS);
m_nProdVersion[2] = HIWORD(pFileInfo->dwProductVersionLS);
m_nProdVersion[3] = LOWORD(pFileInfo->dwProductVersionLS);
CString strVersion ;
strVersion.Format(_T("EasyPlayerPro V%d.%d.%d%d"),m_nProdVersion[0],
m_nProdVersion[1],m_nProdVersion[2],m_nProdVersion[3]);
GlobalUnlock(hMem);
GlobalFree(hMem);
wcscpy(pVersion, strVersion);
}
}
其中数组m_nProdVersion[4]中即为获取版本的四段值,调试模式下结果如下图:
EasyPlayer播放器系列项目依赖其灵活控制、低延时、高稳定的特点,已经成熟运用于多个项目场景当中,其中包括手机直播、桌面直播、远程教育课堂直播等,同时在城市安防或者社区安防监控的视频播放当中也具备很好的兼容性。
如果大家还想了解更多相关内容,欢迎咨询我们或着访问TSINGSEE青犀视频官方网站了解。