将视频转换成MP4 - Windows c++

本教程展示了如何使用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++项目通过审查添加引用和设置一个许可证教程。

创建项目并添加LEADTOOLS引用

开始的一个副本64位Windows API创建的项目添加引用和设置一个许可证教程。如果项目不可用,按照这个教程中的步骤创建它。

为了转换视频文件,LEADTOOLS需要额外的引用。添加所需的多媒体库通过打开预编译头188宝金博怎么下载文件的引用,pch.hstdafx.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宝金博怎么下载

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2022领先的技术公司。保留所有权利。