Imports Leadtools
Imports Leadtools.Multimedia
Imports LeadtoolsMultimediaExamples.Fixtures
Public _result As Boolean = False
Public _form As ConvertCtrlForm = New ConvertCtrlForm()
Private _convertCtrl As ConvertCtrl = Nothing
Private _dvdWriter As LTDvdWriter = Nothing
Public Sub DvdWriterExample()
' reference the convert control
_convertCtrl = _form.ConvertCtrl
' source files for DVD content
Dim inFile1 As String = "mediafiles\input\DVDWriter_Source1.avi"
Dim inFile2 As String = "mediafiles\input\DVDWriter_Source2.avi"
Dim inFile3 As String = "mediafiles\input\DVDWriter_Source3.avi"
Dim inFile4 As String = "mediafiles\input\DVDWriter_Source4.avi"
Dim backgroundImageFile As String = "mediafiles\input\DVDWriter_Background.jpg"
Dim outFile As String = "mediafiles\output\ConvertCtrl_DvdWriterExample_DVD"
Try
_dvdWriter = Nothing
_convertCtrl.Preview = True
_convertCtrl.PreviewVisible = True
' setup the converter
_convertCtrl.TargetFormat = TargetFormatType.DVD
_convertCtrl.VideoCompressors.Mpeg2.Selected = True
_convertCtrl.AudioCompressors.MpegAudio.Selected = True
' Create a DVD image with 2 titles, each contains 2 chapters:
' Source video
_convertCtrl.SourceFile = inFile1
' Destination image folder
_convertCtrl.TargetFile = outFile
' Retrieve the DVD Writer interface
_dvdWriter = TryCast(_convertCtrl.GetSubObject(ConvertObject.Sink), LTDvdWriter)
_dvdWriter.RemoveAllMenuTitles()
_dvdWriter.MenulessTitlePlay = False
' Set the TitleBreak property to false.
' This will prevent the title from being written immediately after the conversion
_dvdWriter.TitleBreak = False
_dvdWriter.AddMenuTitle("Title 1", -1)
' Write the first chapter in the first title
_convertCtrl.StartConvert()
Do While _convertCtrl.State <> ConvertState.Stopped
Application.DoEvents()
Loop
_convertCtrl.ResetSource()
Dim highPart As Integer = 0
Dim lowPart As Integer = _dvdWriter.GetBytesWritten(highPart)
Dim written As Int64 = highPart << 32 Or lowPart
_convertCtrl.SourceFile = inFile2
_convertCtrl.StartConvert()
Do While _convertCtrl.State <> ConvertState.Stopped
Application.DoEvents()
Loop
_convertCtrl.ResetSource()
' Prepare for the second title
' Set the TitleBreak property to TRUE, so the the current title can be flushed
_dvdWriter.TitleBreak = True
' Disable Overwrite so the title will be appended to an existing dvd image
_dvdWriter.Overwrite = False
_dvdWriter.MenulessTitlePlay = False
' Set the TitleBreak property to FALSE.
' This will prevent the title from being written immediately after the conversion
_dvdWriter.TitleBreak = False
_dvdWriter.AddMenuTitle("Title 2", -1)
' Write the first chapter in the second title
_convertCtrl.SourceFile = inFile3
_convertCtrl.StartConvert()
Do While _convertCtrl.State <> ConvertState.Stopped
Application.DoEvents()
Loop
_convertCtrl.ResetSource()
' Write the second chapter in the second title
_convertCtrl.SourceFile = inFile4
_convertCtrl.StartConvert()
Do While _convertCtrl.State <> ConvertState.Stopped
Application.DoEvents()
Loop
_convertCtrl.ResetSource()
' Close the second title
_dvdWriter.TitleBreak = True
_dvdWriter.TitleMenu = True
_dvdWriter.MenuLoop = True
_dvdWriter.MenulessTitlePlay = False
' Write the second chapter in the second title
_convertCtrl.SourceFile = backgroundImageFile
ChangeStillImageDuration(1.0)
_convertCtrl.StartConvert()
Do While _convertCtrl.State <> ConvertState.Stopped
Application.DoEvents()
Loop
_convertCtrl.ResetSource()
_dvdWriter.TitleMenu = False
_dvdWriter.Overwrite = False
_convertCtrl.ResetTarget()
_convertCtrl.ResetSource()
' done, free COM object
Marshal.ReleaseComObject(_dvdWriter)
_dvdWriter = Nothing
' set the result
_result = True
Catch ex As Exception
_result = False
End Try
End Sub
Private Sub ChangeStillImageDuration(ByVal duration As Double)
Dim pStlImgRd As ILTStlImgRd
Try
pStlImgRd = TryCast(_convertCtrl.GetSubObject(ConvertObject.SourceFilter), ILTStlImgRd)
If Not pStlImgRd Is Nothing Then
' get the current menu duration
Dim currentDuration As Double
currentDuration = _convertCtrl.Duration
If currentDuration * 2 <= duration Then
pStlImgRd.Loop = CInt(duration / currentDuration + 0.5)
End If
End If
Catch
End Try
End Sub
using Leadtools;
using Leadtools.Multimedia;
using LeadtoolsMultimediaExamples.Fixtures;
public bool _result = false;
public ConvertCtrlForm _form = new ConvertCtrlForm();
private ConvertCtrl _convertCtrl = null;
private LTDvdWriter _dvdWriter = null;
public void DvdWriterExample()
{
// reference the convert control
_convertCtrl = _form.ConvertCtrl;
// source files for DVD content
string inFile1 = Path.Combine(LEAD_VARS.MediaDir,"DVDWriter_Source1.avi");
string inFile2 = Path.Combine(LEAD_VARS.MediaDir,"DVDWriter_Source2.avi");
string inFile3 = Path.Combine(LEAD_VARS.MediaDir,"DVDWriter_Source3.avi");
string inFile4 = Path.Combine(LEAD_VARS.MediaDir,"DVDWriter_Source4.avi");
string backgroundImageFile = Path.Combine(LEAD_VARS.MediaDir,"DVDWriter_Background.jpg");
string outFile = Path.Combine(LEAD_VARS.MediaDir,"ConvertCtrl_DvdWriterExample_DVD");
try
{
_dvdWriter = null;
_convertCtrl.Preview = true;
_convertCtrl.PreviewVisible = true;
// setup the converter
_convertCtrl.TargetFormat = TargetFormatType.DVD;
_convertCtrl.VideoCompressors.Mpeg2.Selected = true;
_convertCtrl.AudioCompressors.MpegAudio.Selected = true;
// Create a DVD image with 2 titles, each contains 2 chapters:
// Source video
_convertCtrl.SourceFile = inFile1;
// Destination image folder
_convertCtrl.TargetFile = outFile;
// Retrieve the DVD Writer interface
_dvdWriter = _convertCtrl.GetSubObject(ConvertObject.Sink) as LTDvdWriter;
_dvdWriter.RemoveAllMenuTitles();
_dvdWriter.MenulessTitlePlay = false;
// Set the TitleBreak property to false.
// This will prevent the title from being written immediately after the conversion
_dvdWriter.TitleBreak = false;
_dvdWriter.AddMenuTitle("Title 1", -1);
// Write the first chapter in the first title
_convertCtrl.StartConvert();
while (_convertCtrl.State != ConvertState.Stopped)
Application.DoEvents();
_convertCtrl.ResetSource();
int highPart = 0;
int lowPart = _dvdWriter.GetBytesWritten(out highPart);
Int64 written = highPart << 32 | lowPart;
_convertCtrl.SourceFile = inFile2;
_convertCtrl.StartConvert();
while (_convertCtrl.State != ConvertState.Stopped)
Application.DoEvents();
_convertCtrl.ResetSource();
// Prepare for the second title
// Set the TitleBreak property to TRUE, so the the current title can be flushed
_dvdWriter.TitleBreak = true;
// Disable Overwrite so the title will be appended to an existing dvd image
_dvdWriter.Overwrite = false;
_dvdWriter.MenulessTitlePlay = false;
// Set the TitleBreak property to FALSE.
// This will prevent the title from being written immediately after the conversion
_dvdWriter.TitleBreak = false;
_dvdWriter.AddMenuTitle("Title 2", -1);
// Write the first chapter in the second title
_convertCtrl.SourceFile = inFile3;
_convertCtrl.StartConvert();
while (_convertCtrl.State != ConvertState.Stopped)
Application.DoEvents();
_convertCtrl.ResetSource();
// Write the second chapter in the second title
_convertCtrl.SourceFile = inFile4;
_convertCtrl.StartConvert();
while (_convertCtrl.State != ConvertState.Stopped)
Application.DoEvents();
_convertCtrl.ResetSource();
// Close the second title
_dvdWriter.TitleBreak = true;
_dvdWriter.TitleMenu = true;
_dvdWriter.MenuLoop = true;
_dvdWriter.MenulessTitlePlay = false;
// Write the second chapter in the second title
_convertCtrl.SourceFile = backgroundImageFile;
ChangeStillImageDuration(1.0);
_convertCtrl.StartConvert();
while (_convertCtrl.State != ConvertState.Stopped)
Application.DoEvents();
_convertCtrl.ResetSource();
_dvdWriter.TitleMenu = false;
_dvdWriter.Overwrite = false;
_convertCtrl.ResetTarget();
_convertCtrl.ResetSource();
// done, free COM object
Marshal.ReleaseComObject(_dvdWriter);
_dvdWriter = null;
// set the result
_result = true;
}
catch (Exception ex)
{
_result = false;
}
}
private void ChangeStillImageDuration(double duration)
{
ILTStlImgRd pStlImgRd;
try
{
pStlImgRd = _convertCtrl.GetSubObject(ConvertObject.SourceFilter) as ILTStlImgRd;
if (pStlImgRd != null)
{
// get the current menu duration
double currentDuration;
currentDuration = _convertCtrl.Duration;
if (currentDuration * 2 <= duration)
pStlImgRd.Loop = (int)(duration / currentDuration + 0.5);
}
}
catch
{
}
}
static class LEAD_VARS
{
public const string MediaDir = @"C:\Program Files (x86)\LEAD Technologies\LEADTOOLS 18\Media";
}