Leadtools.MediaFoundation Namespace > TVTuner Class : AudioSubChannel Property |
Imports Leadtools Imports Leadtools.MediaFoundation Imports LeadtoolsMediaFoundationExamples.Fixtures Public _result As Boolean = False Public _form As CaptureCtrlForm = New CaptureCtrlForm() Public Sub DigitalTVTunerExample() ' reference the forms capture control and tv tuner Dim capturectrl As CaptureCtrl = _form.CaptureCtrl Dim outFile As String = Path.Combine(LEAD_VARS.MediaDir, "TVTuner_DigitalTVTunerExample.wmv") Dim mainChannel As Integer = 27 Dim subChannel As Integer = -1 Dim newSubChannel As Integer = -1 Dim subChannelList As Integer() = Nothing Try capturectrl.Preview = True ' select the first digital tuner device with BDA in it's name ' Replace "BDA" with your video capture device name If Not capturectrl.VideoDevices("BDA") Is Nothing Then capturectrl.VideoDevices("BDA").Selected = True End If ' get the TV Tuner device Dim tvTuner As TVTuner = capturectrl.TVTuner ' Check if TV tuner is valid If Not tvTuner Is Nothing Then ' set the input type to cable and set the channel tvTuner.SetInputType(0, TunerInputType.Antenna) tvTuner.SetChannel(mainChannel, -1, -1) ' get the current video sub channel subChannel = tvTuner.VideoSubChannel ' list the sub-channels for the main channle first If tvTuner.VideoSubChannelCount > 0 Then System.Diagnostics.Debug.WriteLine(" Main Channel: " & mainChannel) subChannelList = New Integer(tvTuner.VideoSubChannelCount - 1) {} Dim i As Integer = 0 Do While i < tvTuner.VideoSubChannelCount subChannelList(i) = tvTuner.VideoSubChannelValue(i) System.Diagnostics.Debug.WriteLine(" Sub Channel: " & subChannelList(i)) i += 1 Loop End If ' select the first sub-channel in the list If Not subChannelList Is Nothing AndAlso subChannelList.Length > 0 Then tvTuner.SetChannel(mainChannel, subChannelList(0), -1) mainChannel = tvTuner.Channel newSubChannel = tvTuner.VideoSubChannel System.Diagnostics.Debug.WriteLine("Selected Channel: " & mainChannel & "." & subChannel) End If ' if the Main and Sub channel value are postive, it means tv tuner is happay and dandy, let starts capture If mainChannel > 0 AndAlso subChannel > 0 Then System.Diagnostics.Debug.WriteLine("Start Capturing") capturectrl.TimeLimit = 30 ' just 30 seconds of capture time capturectrl.UseTimeLimit = True capturectrl.TargetFormat = TargetFormatType.WMV capturectrl.TargetFile = outFile capturectrl.StartCapture(CaptureMode.VideoAndAudio) End If End If ' we'll loop on the state and pump messages for this example. ' but you should not need to if running from a Windows Forms application. Do While capturectrl.State = CaptureState.Running Application.DoEvents() Loop System.Diagnostics.Debug.WriteLine("Finish Capturing") ' if TV tuner is valid If Not tvTuner Is Nothing Then ' and set the result to what we expect _result = (subChannel <> newSubChannel) End If Catch ex As Exception _result = False System.Diagnostics.Debug.WriteLine(ex) End Try End Sub Public NotInheritable Class LEAD_VARS Public Const MediaDir As String = "C:\Program Files (x86)\LEAD Technologies\LEADTOOLS 18\Media" End Class
using Leadtools; using Leadtools.MediaFoundation; using LeadtoolsMediaFoundationExamples.Fixtures; public bool _result = false; public CaptureCtrlForm _form = new CaptureCtrlForm(); public void DigitalTVTunerExample() { // reference the forms capture control and tv tuner CaptureCtrl capturectrl = _form.CaptureCtrl; string outFile = Path.Combine(LEAD_VARS.MediaDir,"TVTuner_DigitalTVTunerExample.wmv"); int mainChannel = 27; int subChannel = -1; int newSubChannel = -1; int[] subChannelList = null; try { capturectrl.Preview = true; // select the first digital tuner device with BDA in it's name // Replace "BDA" with your video capture device name if (capturectrl.VideoDevices["BDA"] != null) capturectrl.VideoDevices["BDA"].Selected = true; // get the TV Tuner device TVTuner tvTuner = capturectrl.TVTuner; // Check if TV tuner is valid if (tvTuner != null) { // set the input type to cable and set the channel tvTuner.SetInputType(0, TunerInputType.Antenna); tvTuner.SetChannel(mainChannel, -1, -1); // get the current video sub channel subChannel = tvTuner.VideoSubChannel; // list the sub-channels for the main channle first if (tvTuner.VideoSubChannelCount > 0) { System.Diagnostics.Debug.WriteLine(" Main Channel: " + mainChannel); subChannelList = new int[tvTuner.VideoSubChannelCount]; for (int i = 0; i < tvTuner.VideoSubChannelCount; i++) { subChannelList[i] = tvTuner.VideoSubChannelValue(i); System.Diagnostics.Debug.WriteLine(" Sub Channel: " + subChannelList[i]); } } // select the first sub-channel in the list if (subChannelList != null && subChannelList.Length > 0) { tvTuner.SetChannel(mainChannel, subChannelList[0], -1); mainChannel = tvTuner.Channel; newSubChannel = tvTuner.VideoSubChannel; System.Diagnostics.Debug.WriteLine("Selected Channel: " + mainChannel + "." + subChannel); } // if the Main and Sub channel value are postive, // it means tv tuner is happay and dandy, let starts capture if (mainChannel > 0 && subChannel > 0) { System.Diagnostics.Debug.WriteLine("Start Capturing"); capturectrl.TimeLimit = 30; // just 30 seconds of capture time capturectrl.UseTimeLimit = true; capturectrl.TargetFormat = TargetFormatType.WMV; capturectrl.TargetFile = outFile; capturectrl.StartCapture(CaptureMode.VideoAndAudio); } } // we'll loop on the state and pump messages for this example. // but you should not need to if running from a Windows Forms application. while (capturectrl.State == CaptureState.Running) Application.DoEvents(); System.Diagnostics.Debug.WriteLine("Finish Capturing"); // if TV tuner is valid if (tvTuner != null) { // and set the result to what we expect _result = (subChannel != newSubChannel); } } catch (Exception ex) { _result = false; System.Diagnostics.Debug.WriteLine(ex); } } static class LEAD_VARS { public const string MediaDir = @"C:\Program Files (x86)\LEAD Technologies\LEADTOOLS 18\Media"; }