The following code demonstrates how to create DVD images using LEAD Multimedia toolkit.
// include the LEAD Multimedia TOOLKIT header#include "ltmm.h"#include "ILTDVDWriter2.h"void WaitForCompletion(IltmmConvert *pConvert);int main(){IltmmConvert *pConvert = NULL;IUnknown *pDvdWriter = NULL;ILTDvdWriter *pIDvdWriter = NULL;BSTR szFileName = NULL;IltmmCompressors *pCompressors;long lIndex = 0;CoInitialize(NULL);// create a converter objectHRESULT hr = CoCreateInstance(CLSID_ltmmConvert, NULL, CLSCTX_INPROC_SERVER, IID_IltmmConvert, (void**) &pConvert);// setup the converter:hr = pConvert->put_TargetFormat(ltmmConvert_TargetFormat_DVD);hr = pConvert->get_VideoCompressors(&pCompressors);hr = pCompressors->Find(L"@device:sw:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\\LEAD MPEG2 Encoder (2.0)", &lIndex);hr = pCompressors->put_Selection(lIndex);pCompressors->Release();hr = pConvert->get_AudioCompressors(&pCompressors);hr = pCompressors->Find(L"@device:sw:{33D9A761-90C8-11D0-BD43-00A0C911CE86}\\LEAD MPEG Audio Encoder (2.0)", &lIndex);hr = pCompressors->put_Selection(lIndex);pCompressors->Release();// 1- Create a DVD image with 1 title that contains 1 chapter:szFileName = ::SysAllocString(MAKE_MEDIA_PATH("DaDa_CMP.avi"));// Source videohr = pConvert->put_SourceFile(szFileName);SysFreeString(szFileName);szFileName = ::SysAllocString(MAKE_MEDIA_PATH(""));// Destination image folderhr = pConvert->put_TargetFile(szFileName);SysFreeString(szFileName);hr = pConvert->StartConvert();// Wait for the conversion to finish. You can use a window to receive notificationsWaitForCompletion(pConvert);// DonepConvert->ResetTarget();pConvert->ResetSource();// 2- Create a DVD image with 1 title that contains 2 chapters:szFileName = ::SysAllocString(MAKE_MEDIA_PATH("DaDa_CMP.avi"));// Source videohr = pConvert->put_SourceFile(szFileName);SysFreeString(szFileName);szFileName = ::SysAllocString(MAKE_MEDIA_PATH(""));// Destination image folderhr = pConvert->put_TargetFile(szFileName);SysFreeString(szFileName);// Retrieve the DVD Writer interfacehr = pConvert->GetSubObject(ltmmConvert_Object_Sink, &pDvdWriter);pDvdWriter->QueryInterface(IID_ILTDvdWriter, (void**)&pIDvdWriter);// Set the DVD temporary files folderszFileName = ::SysAllocString(MAKE_MEDIA_PATH(""));// Destination image folderpIDvdWriter->put_TempPath(szFileName);SysFreeString(szFileName);// Set the TitleBreak property to FALSE.// This will prevent the title from being written immediately after the conversionpIDvdWriter->put_TitleBreak(VARIANT_FALSE);// write the first chapterhr = pConvert->StartConvert();// Wait for the conversion to finish. You can use a window to receive notificationsWaitForCompletion(pConvert);// You can change the source file before this step.// This demonstration code uses the same file for all chapters.// Create chapter 2.hr = pConvert->StartConvert();WaitForCompletion(pConvert);// Close the titlepIDvdWriter->put_TitleBreak(VARIANT_TRUE);// DonepDvdWriter->Release();pDvdWriter = NULL;pIDvdWriter->Release();pIDvdWriter = NULL;pConvert->ResetTarget();pConvert->ResetSource();// 3- Create a DVD image with 2 titles, each contains 2 chapters:szFileName = ::SysAllocString(MAKE_MEDIA_PATH("DaDa_CMP.avi"));// Source videohr = pConvert->put_SourceFile(szFileName);SysFreeString(szFileName);szFileName = ::SysAllocString(MAKE_MEDIA_PATH(""));// Destination image folderhr = pConvert->put_TargetFile(szFileName);SysFreeString(szFileName);// Retrieve the DVD Writer interfacehr = pConvert->GetSubObject(ltmmConvert_Object_Sink, &pDvdWriter);pDvdWriter->QueryInterface(IID_ILTDvdWriter, (void**)&pIDvdWriter);// Set the TitleBreak property to FALSE.// This will prevent the title from being written immediately after the conversionpIDvdWriter->put_TitleBreak(VARIANT_FALSE);// Write the first chapter in the first titlehr = pConvert->StartConvert();// Wait for the conversion to finish. You can use a window to receive notificationsWaitForCompletion(pConvert);// Write the second chapter in the first title// You can change the source file before this step, this demonstration code uses the same file for all chapters.hr = pConvert->StartConvert();WaitForCompletion(pConvert);// Prepare for the second title// Set the TitleBreak property to TRUE, so the current title can be flushedpIDvdWriter->put_TitleBreak(VARIANT_TRUE);// Set the TitleBreak property to FALSE.// This will prevent the title from being written immediately after the conversionpIDvdWriter->put_TitleBreak(VARIANT_FALSE);// Disable Overwrite so the title will be appended to an existing dvd imagepIDvdWriter->put_Overwrite(VARIANT_FALSE);// Write the first chapter in the second titlehr = pConvert->StartConvert();// Wait for the conversion to finish. You can use a window to receive notificationsWaitForCompletion(pConvert);// Write the second chapter in the second titlehr = pConvert->StartConvert();WaitForCompletion(pConvert);// Close the second titlepIDvdWriter->put_TitleBreak(VARIANT_TRUE);// restore the overwrite propertypIDvdWriter->put_Overwrite(VARIANT_TRUE);// DonepDvdWriter->Release();pDvdWriter = NULL;pIDvdWriter->Release();pIDvdWriter = NULL;pConvert->ResetTarget();pConvert->ResetSource();pConvert->Release();CoUninitialize();return 0;}void WaitForCompletion(IltmmConvert *pConvert){long lState = ltmmConvert_State_Running;MSG msg;pConvert->get_State(&lState);while(lState != ltmmConvert_State_Stopped){if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){TranslateMessage(&msg);DispatchMessage(&msg);}pConvert->get_State(&lState);}}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
