本教程展示了如何使用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宝金博怎么下载