public static void AdjustMeta2( VideoContainer2 form, MetadataConfiguration conf) { if (conf != null) { bool Done = false; if ((conf.Multicast != null) && (conf.Multicast.Address != null)) { if ((conf.Multicast.Address.Type == IPType.IPv4) && !string.IsNullOrEmpty(conf.Multicast.Address.IPv4Address)) { form.ConfigureMeta(conf.Multicast.Address.IPv4Address, conf.Multicast.Port, conf.Multicast.TTL); Done = true; } if ((conf.Multicast.Address.Type == IPType.IPv6) && !string.IsNullOrEmpty(conf.Multicast.Address.IPv6Address)) { form.ConfigureMeta(conf.Multicast.Address.IPv6Address, conf.Multicast.Port, conf.Multicast.TTL); Done = true; } } if (!Done) { form.ConfigureMeta(); } } }
static void Main(string[] args) { VideoContainer2.VerifyFilterRegistration(); System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.InvariantCulture; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (args.Length == 0 || args.Contains("-v")) { Application.Run(new MainForm()); } else { CompactProcessingForm emptyForm = new CompactProcessingForm(); emptyForm.ShowInTaskbar = false; System.Threading.Thread thread = new Thread(new ThreadStart(new Action(() => { new SilentProcessingController(emptyForm).Run(args); if (emptyForm.Created) { emptyForm.Invoke(new Action(emptyForm.Close)); } }))); emptyForm.Shown += (s, e) => { thread.Start(); }; Application.Run(emptyForm); } }
public static void AdjustAudio2( VideoContainer2 form, AudioEncoderConfiguration conf) { if (conf != null) { string Encoding = null; switch (conf.Encoding) { case AudioEncoding.G711: Encoding = "PCMA"; break; case AudioEncoding.G726: Encoding = "G726"; break; case AudioEncoding.AAC: Encoding = "MPEG4-GENERIC"; break; } bool Done = false; if ((conf.Multicast != null) && (conf.Multicast.Address != null)) { if ((conf.Multicast.Address.Type == IPType.IPv4) && !string.IsNullOrEmpty(conf.Multicast.Address.IPv4Address)) { form.ConfigureAudio(Encoding, 1, conf.SampleRate, conf.Multicast.Address.IPv4Address, conf.Multicast.Port, conf.Multicast.TTL); Done = true; } if ((conf.Multicast.Address.Type == IPType.IPv6) && !string.IsNullOrEmpty(conf.Multicast.Address.IPv6Address)) { form.ConfigureAudio(Encoding, 1, conf.SampleRate, conf.Multicast.Address.IPv6Address, conf.Multicast.Port, conf.Multicast.TTL); Done = true; } } if (!Done) { form.ConfigureAudio(Encoding, 1, conf.SampleRate); } } }
public static void AdjustVideo2( VideoContainer2 form, VideoEncoderConfiguration conf) { if ((conf != null) && (conf.Resolution != null)) { string Encoding = null; switch (conf.Encoding) { case VideoEncoding.JPEG: Encoding = "JPEG"; break; case VideoEncoding.MPEG4: Encoding = "MP4V-ES"; break; case VideoEncoding.H264: Encoding = "H264"; break; } int FPS = 5; if (conf.RateControl != null) { if (conf.RateControl.EncodingInterval > 0) { FPS = conf.RateControl.FrameRateLimit / conf.RateControl.EncodingInterval; } else { FPS = conf.RateControl.FrameRateLimit; } if (FPS < 1) { FPS = 1; } if (FPS > 120) { FPS = 120; } } bool Done = false; if ((conf.Multicast != null) && (conf.Multicast.Address != null)) { if ((conf.Multicast.Address.Type == IPType.IPv4) && !string.IsNullOrEmpty(conf.Multicast.Address.IPv4Address)) { form.ConfigureVideo(Encoding, conf.Resolution.Width, conf.Resolution.Height, FPS, conf.Multicast.Address.IPv4Address, conf.Multicast.Port, conf.Multicast.TTL); Done = true; } if ((conf.Multicast.Address.Type == IPType.IPv6) && !string.IsNullOrEmpty(conf.Multicast.Address.IPv6Address)) { form.ConfigureVideo(Encoding, conf.Resolution.Width, conf.Resolution.Height, FPS, conf.Multicast.Address.IPv6Address, conf.Multicast.Port, conf.Multicast.TTL); Done = true; } } if (!Done) { form.ConfigureVideo(Encoding, conf.Resolution.Width, conf.Resolution.Height, FPS); } } }
private void DoSequence(string codec, string filename, MediaUri Uri, StreamType streamType, TransportProtocol protocol) { if (NewGenVideo == null) { NewGenVideo = new VideoContainer2(); } VideoUtils.AdjustGeneral2(NewGenVideo, _username, _password, MessageTimeout, protocol, streamType, Uri); VideoUtils.AdjustBackchannel2(NewGenVideo, codec, filename); NewGenVideo.EventSink = this; NewGenVideo.SetSequence(4); NewGenVideo.SilentRun(); NewGenVideo.EventSink = null; }
private void DoSequence(VideoEncoderConfiguration config, MediaUri Uri) { if (NewGenVideo == null) { NewGenVideo = new VideoContainer2(); } VideoUtils.AdjustGeneral2(NewGenVideo, _username, _password, MessageTimeout, TransportProtocol.UDP, StreamType.RTPUnicast, Uri); VideoUtils.AdjustVideo2(NewGenVideo, config); //ValidateStreamSequence22(); NewGenVideo.EventSink = this; NewGenVideo.SetSequence(2, OperationDelay, false, true); NewGenVideo.Connect(); NewGenVideo.SetupWindow(); VideoIsOpened = true; NewGenVideo.Run(); NewGenVideo.CloseWindow(); VideoIsOpened = false; NewGenVideo.EventSink = null; }
public static void VW(object param) { VideoStreamForm vsf = (VideoStreamForm)param; try { lock (vsf.eventConsumer) { vsf.streamUri = vsf.getStreamUri(vsf.streamSetup, vsf.profile.token); } } catch (Exception ex) { vsf.exception = ex; } if (vsf.exception == null) { VideoContainer2 videoForm = new VideoContainer2(); //videoForm.NICIndex = vsf.NICIndex; VideoUtils.AdjustGeneral2( videoForm, vsf.username, vsf.password, vsf.messageTimeout, vsf.streamSetup.Transport.Protocol, vsf.streamSetup.Stream, vsf.streamUri); VideoUtils.AdjustVideo2( videoForm, vsf.profile.VideoEncoderConfiguration); //videoForm.SetSequence(1); bool VideoIsOpened = false; try { VideoIsOpened = true; videoForm.EventSink = vsf; #if false videoForm.SilentStart(); ((AutoResetEvent)vsf.eventOpened).Set(); vsf.signalCloseWindow.WaitOne(); videoForm.SilentStop(); #else videoForm.OpenWindow(false); ((AutoResetEvent)vsf.eventOpened).Set(); vsf.signalCloseWindow.WaitOne(); videoForm.CloseWindow(); #endif VideoIsOpened = false; } catch (Exception ex) { vsf.exception = ex; } finally { if (VideoIsOpened) { videoForm.CloseWindow(); } videoForm = null; } } ((ManualResetEvent)vsf.eventWorkEnded).Set(); ((AutoResetEvent)vsf.signalCloseWindow).Set(); }
public static void AdjustBackchannel2(VideoContainer2 form, string codec, string filename) { form.ConfigureBackchannel(codec, filename); }
public static void AdjustGeneral2( VideoContainer2 form, string username, string password, int messageTimeout, TransportProtocol protocol, StreamType streamType, MediaUri streamUri) { VideoContainer2.RegisterCallbacks(); int Port = 0; int Transport = 0; string uri = (streamUri != null) ? streamUri.Uri : ""; try { int pos = uri.IndexOf(']', 8); if (pos > 0) // IPv6 { pos++; } else { pos = uri.IndexOf(':', 8); } if (uri.Substring(pos, 1) == ":") // port specified { pos++; int pos2 = uri.IndexOf('/', pos); pos = int.Parse(uri.Substring(pos, pos2 - pos)); if (pos > 0) { Port = pos; } } } catch (System.Exception) { }; switch (protocol) { case TransportProtocol.UDP: Transport = 0; if (Port == 0) { Port = 554; } break; case TransportProtocol.TCP: Transport = 0; if (Port == 0) { Port = 554; } break; case TransportProtocol.RTSP: Transport = 1; if (Port == 0) { Port = 554; } break; case TransportProtocol.HTTP: Transport = 2; if (Port == 0) { Port = 80; } break; } ; if (streamType == StreamType.RTPMulticast) { Transport = 3; } form.ConfigureConnection(uri, username, password, Transport, Port, 0, messageTimeout); }