从视频源捕获到文件- Windows c++

本教程演示如何使用LEADTOOLS多188宝金博怎么下载媒体SDK的Windows c++应用程序CaptureCtrl执行视频文件的简化捕获。

概述
总结 本教程演示如何使用LEADTOOLS Multimedia SDK从源捕获视频文件。188宝金博怎么下载
完成时间 30分钟
Visual Studio项目 下载教程项目(18kb)
平台 Windows c++应用程序
IDE Visual Studio 2019
开发许可 下载LEADTOOLS
用另一种语言试试

所需的知识

在开始之前从视频源捕获到文件- Windows c++教程,通过回顾添加引用和设置License教程。

创建项目并添加LEADTOOLS引用

中创建的64位Windows API项目的副本添加引用和设置License教程。如果项目不可用,请按照该教程中的步骤创建它。

为了捕获视频文件,LEADTOOLS需要额外的引用。也可以通过打开预编译的头文件添加所188宝金博怎么下载需的多媒体库引用pch.hstdafx.h根据所使用的Visual Studio版本,并添加以下行:

//添加LEADTOOLS多媒体引188宝金博怎么下载用#进口“c: \ Windows \ SysWOW64 \ ltmm21x.dll”no_namespace, named_guids

请注意

有关特定多媒体功能所需dll的完整列表,请参阅188宝金博怎么下载188宝金博怎么下载基于directshow的应用程序中必须包含的多媒体文件

设置License文件

许可证解锁项目所需的特性。它必须在调用任何工具箱函数之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时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控件的实例并使用它来录制视频文件。

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。