LTDVDWriter Namespace > ILTDvdWriter Interface : MenuLoop Property |
'Declaration <DispIdAttribute(12)> Property MenuLoop As Boolean
'Usage Dim instance As ILTDvdWriter Dim value As Boolean instance.MenuLoop = value value = instance.MenuLoop
[DispIdAttribute(12)] bool MenuLoop {get; set;}
[DispIdAttribute(12)] property bool MenuLoop { bool get(); void set ( bool value); }
False if the menu background video is played only once. This is the default value.
Do not set this property to True if the menu background is a still image. If the background is a still image, there is no reason to loop since the image never changes.
Do not use the menu loop if the background contains a very short video. Some DVD drives take some time to restart playing the background and if it is a short video that can cause undesired effects. If you still want to use menu loop with a short video clip, obtain better results by concatenating the clip several times and using the longer clip as a menu. For example: To use a 1-sec clip as the menu in a continuous loop. Concatenate the clip 8 times, creating an 8-sec video clip (the original clip playing 8 times). Now use this 8-sec clip as the background and enable the menu loop.
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"; }