本教程展示了如何使用LEADTOOLS多媒体SDK创建一个c++ Windows API的188宝金博怎么下载应用程序使用IltmmConvert
执行一个简化转换MP4格式的视频文件。
概述 | |
---|---|
总结 | 本教程介绍了如何转换视频文件在一个c++ Windows应用程序。 |
完成时间 | 30分钟 |
Visual Studio项目 | 下载教程项目(18 KB) |
平台 | Windows c++应用程序 |
IDE | Visual Studio 2019 |
开发许可 | 下载LEADTOOLS |
试试用另一种语言 |
|
在工作之前将视频转换成MP4 - Windows c++教程中,熟悉的步骤创建一个c++项目通过审查添加引用和设置一个许可证教程。
开始的一个副本64位Windows API创建的项目添加引用和设置一个许可证教程。如果项目不可用,按照这个教程中的步骤创建它。
为了转换视频文件,LEADTOOLS需要额外的引用。添加所需的多媒体库通过打开预编译头188宝金博怎么下载文件的引用,pch.h
或stdafx.h
根据使用Visual Studio版本,并添加以下行:
/ /添加LEADTOOLS多媒体188宝金博怎么下载引用
#进口“c: \ Windows \ SysWOW64 \ ltmm22x.dll”no_namespace, named_guids
请注意
dll的完整列表,需要特定的多媒体特性,参考188宝金博怎么下载188宝金博怎么下载你和DirectShow-based应用程序必须包括多媒体文件。
许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可。
有两种类型的运行时许可证:
请注意
添加LEADTOOLS引用和设置许可中会详细介绍添加引用和设置一个许可证教程。
现在添加了LEADTOOLS引用和许可,可以开始编码。
使用解决方案资源管理器导航到项目的CPP文件,该文件包含了指向
主窗口函数。添加以下声明全局变量顶部:
/ /全局变量:
IltmmConvert * pConvert =零;
常量使用UINT WM_CONVERT_NOTIFY = WM_USER + 50;/ /自定义窗口消息处理转换通知
导航到指向
函数,它应该有一个案例WM_DESTROY
在里面。添加一个新的案例WM_CREATE
如果它不存在,并添加以下代码:
情况下WM_CREATE:
{
HRESULT hr = CoInitialize(空);
如果失败(人力资源)
{
对话框(hWnd,文本(“错误启动COM库. . \ nAborting”),文本(“LEADTOOLS演示”),MB_ICONERROR);
返回1;
}
hr = CoCreateInstance (CLSID_ltmmConvert, NULL, CLSCTX_INPROC_SERVER IID_IltmmConvert (无效* *)&pConvert);
如果失败(人力资源)
{
对话框(hWnd,文本(“创建转换控制错误. . \ nAborting”),文本(“LEADTOOLS演示”),MB_ICONERROR);
返回1;
}
/ /定义消息通知窗口
pConvert - > SetNotifyWindow ((长hWnd, WM_CONVERT_NOTIFY);
打破;
}
修改处理WM_DESTROY
在指向()
功能包含以下行:
情况下WM_DESTROY:
如果(pConvert)
pConvert - >释放();
CoUninitialize ();
PostQuitMessage (0);
打破;
下面的步骤是针对Visual Studio 2019;他们可以为其他版本的Visual Studio是不同的。
去解决方案资源管理器并双击资源文件(.rc)。扩大资源树中菜单选项卡,双击菜单资源designer界面中打开它。下面的空项退出项,点击和类型转换MP4……。拖动上面的新项目退出。确保项目的IDID_FILE_CONVERTTOMP4
。
打开项目的CPP文件,再次浏览指向
功能和下开关(wmId)
声明中,这是以下WM_COMMAND
情况下,添加下面的新病例。
/ /指向(),在“案例WM_COMMAND:”
开关(wmId)
{
情况下ID_FILE_CONVERTTOMP4:
{
TCHAR szFileIn[260] =文本(”“);/ /输入文件的名字
TCHAR szFileOut[260] =文本(”“);/ /输出文件的名字
/ /选择输出文件的名字
如果(!GetSourceFileName (hWnd, szFileIn ARRAYSIZE (szFileIn)))
打破;
/ /输入文件的名字复制到输出
_tcscpy_s (szFileOut ARRAYSIZE (szFileOut) szFileIn);
/ /追加”。mp4”输出文件的名字
_tcscat_s (szFileOut文本(“mp4”));
pConvert - >源文件= szFileIn;
pConvert - > TargetFile = szFileOut;
pConvert - > TargetFormat = ltmmConvert_TargetFormat_ISO;
/ /选择铅H264视频压缩
intnVideoCodec = pConvert - > VideoCompressors - >找到(“@device:西南:{33 d9a760 - 90 - c8 - 11 - d0 bd43 - 00 - a0c911ce86} \ \ H264编码器(4.0)”);
pConvert - > VideoCompressors - >选择= nVideoCodec;
/ /选择铅AAC音频压缩
intnAudioCodec = pConvert - > AudioCompressors - >找到(L“@device:西南:{33 d9a761 - 90 - c8 - 11 - d0 bd43 - 00 - a0c911ce86} \ \ {e2b7dd70 - 38 - c5 - 11 - d5 - 91 - f6 - 00104 - bdb8ff9}”);
pConvert - > AudioCompressors - >选择= nAudioCodec;
pConvert - > AllowedStreams = ltmmConvert_Stream_Audio | ltmmConvert_Stream_Video;
对话框(hWnd,文本(“单击OK开始转换。当完成\ nAnother消息框将会出现。不退出应用程序之前!”),文本(“转换演示”),MB_ICONINFORMATION);
pConvert - > StartConvert ();
}
打破;
/ /把剩下的代码
显示一个文件打开对话框获取文件名称,创建一个新的命名函数GetSourceFileName ()
并添加以下代码。的GetSourceFileName ()
函数可以是任何功能,填补了pszFileName
变量与一个有效的输入文件名称(包括完整路径,如果需要的话)。
boolTCHAR * pszFileName GetSourceFileName (HWND HWND, DWORD nLen)
{
OPENFILENAME OPENFILENAME = {0};
OpenFileName。lStructSize =运算符OpenFileName;
OpenFileName。hwndOwner = hwnd;
OpenFileName。lpstrFile = pszFileName;
OpenFileName。nMaxFile = nLen;
OpenFileName。lpstrFilter =文本(“视频文件\ 0 * .avi; * . ogg; * .mkv; * .mpg; * .wmv \ 0”);
OpenFileName。nFilterIndex = 1;
OpenFileName。lpstrFileTitle =零;
OpenFileName。nMaxFileTitle = 0;
OpenFileName。lpstrInitialDir =零;
OpenFileName。旗帜= OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
/ /显示文件打开对话框
如果(! GetOpenFileName (&OpenFileName))
返回假;
返回真正的;
}
在指向
函数,添加一个新的案例WM_CONVERT_NOTIFY
下开关(消息)
处理转换控制的通知。添加以下代码:
情况下WM_CONVERT_NOTIFY:
{
开关(按钮)
{
情况下ltmmConvert_Notify_Complete:
pConvert - > ResetSource ();
pConvert - > ResetTarget ();
对话框(hWnd,文本(“完成转换”。),文本(“转换演示”),MB_ICONINFORMATION);
InvalidateRect (hWnd, NULL,真的);
打破;
情况下ltmmConvert_Notify_ErrorAbort:
对话框(hWnd,文本(“错误转换。”),文本(“转换演示”),MB_ICONERROR);
打破;
情况下ltmmConvert_Notify_Progress:
{
TCHAR szProgress [1024];
_stprintf_s (szProgress ARRAYSIZE (szProgress)文本(“把…% d % %”),(int)lParam);
HDC HDC = GetDC (hWnd);
TextOut (hDC 50 50, szProgress _tcslen (szProgress));
ReleaseDC (hWnd, hDC);
}
}
}
打破;
按运行项目F5,或通过选择调试- >开始调试。
如果接下来的步骤正确,项目构建和运行的应用程序。选择文件- >转换为MP4选择一个多媒体源视频文件188宝金博怎么下载并把它转换成MP4 (ISO)文件格式。保存到输出文件与源文件相同的位置”。mp4”扩展附加到它的名字。
本教程介绍了如何使用一个转换控制生产MP4视频文件从其他多媒体格式转换处理进展通知。188宝金博怎么下载