本教程演示如何使用LEADTOOLS多188宝金博怎么下载媒体SDK的Windows c++应用程序CaptureCtrl执行视频文件的简化捕获。
| 概述 | |
|---|---|
| 总结 | 本教程演示如何使用LEADTOOLS Multimedia SDK从源捕获视频文件。188宝金博怎么下载 |
| 完成时间 | 30分钟 |
| Visual Studio项目 | 下载教程项目(18kb) |
| 平台 | Windows c++应用程序 |
| IDE | Visual Studio 2019 |
| 开发许可 | 下载LEADTOOLS |
| 用另一种语言试试 |
|
在开始之前从视频源捕获到文件- Windows c++教程,通过回顾添加引用和设置License教程。
中创建的64位Windows API项目的副本添加引用和设置License教程。如果项目不可用,请按照该教程中的步骤创建它。
为了捕获视频文件,LEADTOOLS需要额外的引用。也可以通过打开预编译的头文件添加所188宝金博怎么下载需的多媒体库引用pch.h或stdafx.h根据所使用的Visual Studio版本,并添加以下行:
//添加LEADTOOLS多媒体引188宝金博怎么下载用#进口“c: \ Windows \ SysWOW64 \ ltmm21x.dll”no_namespace, named_guids
请注意
有关特定多媒体功能所需dll的完整列表,请参阅188宝金博怎么下载188宝金博怎么下载基于directshow的应用程序中必须包含的多媒体文件.
许可证解锁项目所需的特性。它必须在调用任何工具箱函数之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License.
有两种类型的运行时许可证:
请注意
中更详细地介绍了添加LEADTOOLS引用和设置许可添加引用和设置License教程。
现在已经添加了LEADTOOLS引用并设置了许可证,可以开始编码了。
使用解决方案资源管理器导航到项目的CPP文件,其中包含指向函数用于主窗口。在靠近顶部的全局变量中添加以下声明:
//全局变量:IltmmCapture* pCapture = NULL;
导航到指向函数,它应该有案例WM_DESTROY在里面。添加一个新的案例WM_CREATE如果它不存在,在它下面添加以下代码:
情况下WM_CREATE:{HRESULT hr = CoInitialize(NULL);如果失败(人力资源){对话框(hWnd,文本("启动COM库时出错..\nAborting"),文本(“LEADTOOLS演示”), MB_ICONERROR);返回1;}hr = CoCreateInstance(CLSID_ltmmCapture, NULL, CLSCTX_INPROC_SERVER, IID_IltmmCapture, (无效* *) &pCapture);如果失败(人力资源){对话框(hWnd,文本("创建捕获控件时出错..\nAborting"),文本(“LEADTOOLS演示”), MB_ICONERROR);返回1;}pCapture->VideoWindowFrame = (长) hWnd;pCapture->VideoWindowSizeMode = ltmmSizeMode::ltmmNormal;打破;}
修改处理的案例WM_DESTROY在指向()函数包含以下行:
情况下WM_DESTROY:CoUninitialize ();PostQuitMessage (0);打破;
以下步骤适用于Visual Studio 2019;对于Visual Studio的其他版本,它们可能有所不同。
去解决方案资源管理器双击资源文件(.rc)。展开资源树中的菜单选项卡,双击菜单资源,在设计器界面中打开它。的空项中退出项,单击并键入捕获.将新项目拖到上面退出.确保项目的ID为ID_FILE_CAPTURE.
打开项目的CPP文件并导航回指向函数和开关(wmId)表述,就是下面的WM_COMMANDCase,在下面添加新的Case。
//在WndProc()中,在"case WM_COMMAND:"开关(wmId){情况下ID_FILE_CAPTURE:{TCHAR szFileName[260] = TEXT("");//文件名称//选择视频源intnVideoDevice = -1;为(intI = 0;i < pCapture->VideoDevices->Count;+ + i){TCHAR消息[1024];TCHAR* deviceName = pCapture->VideoDevices->Item(i)->FriendlyName;wsprintf(消息、文本(“视频源%d: %s\nUse this device?”), i, deviceName);如果(消息框(hWnd, message, TEXT(“捕获演示”), mb_yesno) == idyes){nVideoDevice = i;打破;}}如果(nVideoDevice = -1)//没有选择设备打破;pCapture->VideoDevices->Selection = nVideoDevice;//启用预览pCapture->PreviewSource = ltmmCapture_Preview_Video;pCapture->预览= TRUE;//选择输出文件名如果(!GetCaptureFileName (szFileName hWnd,运算符szFileName))打破;pCapture->TargetFormat = ltmmCapture_TargetFormat_Avi;//选择LEAD H264视频编解码intnVideoCodec = pCapture-> videocompressor ->Find("@device:sw:{33d9a740 - 90c8 - 11d0 - bd43 - 00a0c911ce86}\\LEAD H264编码器(4.0)");pCapture->VideoCompressors->Selection = nVideoCodec;pCapture->TargetFile = szFileName;pCapture - > StartCapture (ltmmCapture_Mode_Video);对话框(hWnd,文本(“获取. .点击“确定”停止),文本(“捕获演示”), mb_iconinformation);pCapture - > StopCapture ();对话框(hWnd,文本(“捕获完成。”),文本(“捕获演示”), MB_ICONINFORMATION);}打破;//保留其余的代码
要显示文件保存对话框获取文件名,创建一个新函数命名GetCaptureFileName ()并添加下面的代码。的GetCaptureFileName ()函数可以是填充szFileName变量,具有有效的输出文件名(如果需要,包括完整路径)。
保龄球GetCaptureFileName(HWND HWND, TCHAR* pszFileName, DWORD nLen){OPENFILENAME OPENFILENAME = {0};OpenFileName。lStructSize =运算符OpenFileName;OpenFileName。hwndOwner = hwnd;OpenFileName。lpstrFile = pszFileName;OpenFileName。nMaxFile = nLen;OpenFileName。lpstrFilter = TEXT(“AVI文件\ 0 * .avi \ 0”);OpenFileName。lpstrDefExt = TEXT(“avi”);OpenFileName。nFilterIndex = 1;OpenFileName。lpstrFileTitle = NULL;OpenFileName。nMaxFileTitle = 0;OpenFileName。lpstrInitialDir = NULL;OpenFileName。Flags = OFN_PATHMUSTEXIST;//显示文件保存对话框如果(! GetSaveFileName (&OpenFileName))返回假;返回真正的;}
按下运行项目F5,或选择Debug ->开始调试.
如果正确地执行了这些步骤,则应用程序将运行。选择File ->捕获使用户能够从机器上可用的LEADTOOLS多媒体SDK支持的任何多媒体捕获源捕获视频文件并将其保存为AVI文件格式。188宝金博怎么下载
本教程介绍了如何创建Capture控件的实例并使用它来录制视频文件。