Sends a text message to all connected clients.
[DispIdAttribute(4)]
void WriteMessage(
string Message
)
<DispIdAttribute(4)>
Sub WriteMessage( _
ByVal Message As String _
)
[DispIdAttribute(4)]
void WriteMessage(
String^ Message
)
Message
A System.String containing the message to send to all connected clients.
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";
public void WriteMessageExample()
{
// 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.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();
}
// 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()
{
_playCtrl.SourceFile = _networkUrl;
_pDemux = _playCtrl.GetSubObject(PlayObject.Splitter) as LMNetDmx;
_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)
{
string msg = _pDemux.ReadMessage();
// set the result to what we expect
if (msg == TestMessage)
{
_result = true;
Console.WriteLine("Client received message");
}
}
_serverAndClient.TestTimer.Enabled = true;
}
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"
Public Sub WriteMessageExample()
' 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.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
' 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()
_playCtrl.SourceFile = _networkUrl
_pDemux = TryCast(_playCtrl.GetSubObject(PlayObject.Splitter), LMNetDmx)
_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
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
End If
_serverAndClient.TestTimer.Enabled = True
End Sub
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.