[DispIdAttribute(4)]
void ResetToDefaults()
<DispIdAttribute(4)>
Sub ResetToDefaults()
[DispIdAttribute(4)]
void ResetToDefaults();
Resets the network demultiplexer to default values from the previous version of the filter.
using Leadtools;
using Leadtools.Multimedia;
using LeadtoolsMultimediaExamples.Fixtures;
public bool _result = false;
public CaptureAndPlayCtrlForm _serverAndClient = new CaptureAndPlayCtrlForm();
bool _msgSent = false;
CaptureCtrl _captureCtrl;
PlayCtrl _playCtrl;
LMNetMux _pMux;
LMNetDmx _pDemux;
const string _networkUrl = @"ltsf://127.0.0.1:27015"; // network stream url
const string _testMessage = "LEAD NETWORK";
string _recordedVideoFile = Path.Combine(LEAD_VARS.MediaDir, "LMNetDmx_ReadMessageExample.mp4");
public void NetworkDemultiplexerExample()
{
// reference the capture control
_captureCtrl = _serverAndClient.CaptureCtrl;
// reference the play control
_playCtrl = _serverAndClient.PlayCtrl;
try
{
// try to find a video camera
if (_captureCtrl.VideoDevices["Logitech"] == null)
throw new Exception("No Logitech video device available");
_captureCtrl.VideoDevices["Logitech"].Selected = true;
// select a video compressor
_captureCtrl.VideoCompressors.Mpeg4.Selected = true;
// set the target output file
_captureCtrl.TargetFormat = TargetFormatType.NET;
_captureCtrl.TargetFile = _networkUrl;
if (_captureCtrl.IsModeAvailable(CaptureMode.Video))
{
// just 10 seconds of capture time
_captureCtrl.TimeLimit = 10;
_captureCtrl.UseTimeLimit = true;
_captureCtrl.FrameRate = 30;
_captureCtrl.UseFrameRate = true;
_captureCtrl.Preview = true;
// subscribe to the started and progress events for this example
// we will connect a client after the capture starts
// and send a test message after 5 seconds.
_captureCtrl.Started += new EventHandler(CaptureCtrl_Started);
_captureCtrl.Progress += new ProgressEventHandler(CaptureCtrl_Progress);
// ready the capture graph in order to get the LNMetMux instance
_captureCtrl.ReadyCapture(CaptureMode.Video);
// get the network multiplexer reference
_pMux = _captureCtrl.GetSubObject(CaptureObject.TargetFilter) as LMNetMux;
if (_pMux != null)
{
// set some mux settings
_pMux.LiveSource = true;
}
// start capture
_captureCtrl.StartCapture(CaptureMode.Video);
// 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
|| _playCtrl.State == PlayState.Running)
{
Application.DoEvents();
}
// verify we have a recording file too
_result &= File.Exists(_recordedVideoFile);
// release the mux and demux COM objects
if (_pMux != null)
Marshal.ReleaseComObject(_pMux);
if (_pDemux != null)
Marshal.ReleaseComObject(_pDemux);
}
}
catch (Exception)
{
_result = false;
}
}
void CaptureCtrl_Progress(object sender, ProgressEventArgs e)
{
// for this test we will send a message after
// 5 secs of capture time
if (e.time > 5000 && !_msgSent)
{
_pMux.WriteMessage(_testMessage);
Console.WriteLine("Server sent message");
_msgSent = true;
}
}
void CaptureCtrl_Started(object sender, EventArgs e)
{
StartClient();
}
private void StartClient()
{
try
{
LMNetSrc netSrc = new LMNetSrc();
netSrc.CheckConnection(_networkUrl, 0, 5000);
Marshal.ReleaseComObject(netSrc);
}
catch (COMException)
{
// could not connect
return;
}
_playCtrl.SourceFile = _networkUrl;
_pDemux = _playCtrl.GetSubObject(PlayObject.Splitter) as LMNetDmx;
if (_pDemux != null && _pDemux.AutoLiveTolerance < 5)
{
// reset the demux settings to defaults
_pDemux.ResetToDefaults();
// set the live tolerance setting to 5 seconds
// this will cause the playback to be smoother on jittery
// network connections -- although, the playback may lag
// behing the live stream when using a tolerance value > 0
_pDemux.AutoLiveTolerance = 5;
// set the output filename for recorded video
_pDemux.OutputFileName = _recordedVideoFile;
}
_serverAndClient.TestTimer.Interval = 100;
_serverAndClient.TestTimer.Tick += new EventHandler(PlayTimer_Tick);
_serverAndClient.TestTimer.Start();
}
void PlayTimer_Tick(object sender, EventArgs e)
{
_serverAndClient.TestTimer.Enabled = false;
if (_pDemux != null)
{
// read any messages here
string msg = _pDemux.ReadMessage();
// set the result to what we expect
if (msg == _testMessage)
{
_result = true;
Console.WriteLine("Client received message");
}
// get the bitrate
int bitRate = _pDemux.BitRate;
Console.WriteLine("Client bitrate = {0}", bitRate);
}
_serverAndClient.TestTimer.Enabled = true;
}
static class LEAD_VARS
{
public const string MediaDir = @"C:\LEADTOOLS21\Media";
}
Imports Leadtools
Imports Leadtools.Multimedia
Imports LeadtoolsMultimediaExamples.Fixtures
Public _result As Boolean = False
Public _serverAndClient As CaptureAndPlayCtrlForm = New CaptureAndPlayCtrlForm()
Private _msgSent As Boolean = False
Private _captureCtrl As CaptureCtrl
Private _playCtrl As PlayCtrl
Private _pMux As LMNetMux
Private _pDemux As LMNetDmx
Private Const _networkUrl As String = "ltsf://127.0.0.1:27015" ' network stream url
Private Const _testMessage As String = "LEAD NETWORK"
Dim _recordedVideoFile As String = Path.Combine(LEAD_VARS.MediaDir, "mediafiles/output/LMNetDmx_ReadMessageExample.mp4")
Public Sub NetworkDemultiplexerExample()
' reference the capture control
_captureCtrl = _serverAndClient.CaptureCtrl
' reference the play control
_playCtrl = _serverAndClient.PlayCtrl
Try
' try to find a video camera
If _captureCtrl.VideoDevices("Logitech") Is Nothing Then
Throw New Exception("No Logitech video device available")
End If
_captureCtrl.VideoDevices("Logitech").Selected = True
' select a video compressor
_captureCtrl.VideoCompressors.Mpeg4.Selected = True
' set the target output file
_captureCtrl.TargetFormat = TargetFormatType.NET
_captureCtrl.TargetFile = _networkUrl
If _captureCtrl.IsModeAvailable(CaptureMode.Video) Then
' just 10 seconds of capture time
_captureCtrl.TimeLimit = 10
_captureCtrl.UseTimeLimit = True
_captureCtrl.FrameRate = 30
_captureCtrl.UseFrameRate = True
_captureCtrl.Preview = True
' subscribe to the started and progress events for this example
' we will connect a client after the capture starts
' and send a test message after 5 seconds.
AddHandler _captureCtrl.Started, AddressOf CaptureCtrl_Started
AddHandler _captureCtrl.Progress, AddressOf CaptureCtrl_Progress
' ready the capture graph in order to get the LNMetMux instance
_captureCtrl.ReadyCapture(CaptureMode.Video)
' get the network multiplexer reference
_pMux = TryCast(_captureCtrl.GetSubObject(CaptureObject.TargetFilter), LMNetMux)
If Not _pMux Is Nothing Then
' set some mux settings
_pMux.LiveSource = True
End If
' start capture
_captureCtrl.StartCapture(CaptureMode.Video)
' 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 OrElse _playCtrl.State = PlayState.Running
Application.DoEvents()
Loop
' verify we have a recording file too
_result = _result And File.Exists(_recordedVideoFile)
' release the mux and demux COM objects
If Not _pMux Is Nothing Then
Marshal.ReleaseComObject(_pMux)
End If
If Not _pDemux Is Nothing Then
Marshal.ReleaseComObject(_pDemux)
End If
End If
Catch e1 As Exception
_result = False
End Try
End Sub
Private Sub CaptureCtrl_Progress(ByVal sender As Object, ByVal e As ProgressEventArgs)
' for this test we will send a message after
' 5 secs of capture time
If e.time > 5000 AndAlso (Not _msgSent) Then
_pMux.WriteMessage(_testMessage)
Console.WriteLine("Server sent message")
_msgSent = True
End If
End Sub
Private Sub CaptureCtrl_Started(ByVal sender As Object, ByVal e As EventArgs)
StartClient()
End Sub
Private Sub StartClient()
Try
Dim netSrc As LMNetSrc = New LMNetSrc()
netSrc.CheckConnection(_networkUrl, 0, 5000)
Marshal.ReleaseComObject(netSrc)
Catch cex As COMException
' could not connect
Return
End Try
_playCtrl.SourceFile = _networkUrl
_pDemux = TryCast(_playCtrl.GetSubObject(PlayObject.Splitter), LMNetDmx)
If Not _pDemux Is Nothing AndAlso _pDemux.AutoLiveTolerance < 5 Then
' reset the demux settings to defaults
_pDemux.ResetToDefaults()
' set the live tolerance setting to 5 seconds
' this will cause the playback to be smoother on jittery
' network connections -- although, the playback may lag
' behing the live stream when using a tolerance value > 0
_pDemux.AutoLiveTolerance = 5
' set the output filename for recorded video
_pDemux.OutputFileName = _recordedVideoFile
End If
_serverAndClient.TestTimer.Interval = 100
AddHandler _serverAndClient.TestTimer.Tick, AddressOf PlayTimer_Tick
_serverAndClient.TestTimer.Start()
End Sub
Private Sub PlayTimer_Tick(ByVal sender As Object, ByVal e As EventArgs)
_serverAndClient.TestTimer.Enabled = False
If Not _pDemux Is Nothing Then
' read any messages here
Dim msg As String = _pDemux.ReadMessage()
' set the result to what we expect
If msg = _testMessage Then
_result = True
Console.WriteLine("Client received message")
End If
' get the bitrate
Dim bitRate As Integer = _pDemux.BitRate
Console.WriteLine("Client bitrate = {0}", bitRate)
End If
_serverAndClient.TestTimer.Enabled = True
End Sub
Public NotInheritable Class LEAD_VARS
Public Const MediaDir As String = "C:\LEADTOOLS21\Media"
End Class
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
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.