//public void SignalONS(BaseOutNetRTMPStream pONS) //{ // if (_pSignaledRTMPOutNetStream.Contains(pONS)) return; // _pSignaledRTMPOutNetStream.AddLast(pONS); //} public InFileRTMPStream CreateIFS(Variant metadata) { var pRtmpInFileStream = InFileRTMPStream.GetInstance(this, Application.StreamsManager, metadata); if (pRtmpInFileStream == null) { WARN("Unable to get file stream. Metadata:\n{0}", metadata.ToString()); return(null); } if (!pRtmpInFileStream.Initialize(metadata[CONF_APPLICATION_CLIENTSIDEBUFFER])) { WARN("Unable to initialize file inbound stream"); pRtmpInFileStream.Dispose(); return(null); } // _inFileStreams.Add(pRtmpInFileStream); return(pRtmpInFileStream); }
public override OutNetRtmfpStream SubScribeStream(Peer peer, uint id, string name, FlowWriter writer, double start, double length) { var session = writer.Band as Session; var outNetRtmfpStream = new OutNetRtmfpStream(session, session.Application.StreamsManager, id, name) { Writer = writer, Unbuffered = start == -3000 }; outNetRtmfpStream.Init(); var inBoundStream = session.Application.StreamsManager.FindByTypeByName(StreamTypes.ST_IN_NET, name, true, false).Select(x => x.Value).OfType <IInStream>().FirstOrDefault(); switch ((int)start) { case -2000: if (inBoundStream != null) { inBoundStream.Link(outNetRtmfpStream); } else { goto default; } break; case -1000: if (inBoundStream != null) { inBoundStream.Link(outNetRtmfpStream); } else { goto case -999; } break; case -999: if (ClientApplicationManager.ClusterApplication != null) { ClientApplicationManager.ClusterApplication.GetProtocolHandler <BaseClusterAppProtocolHandler>().PlayStream(session.Application.Id, name); } break; default: var metadata = session.Application.StreamsManager.GetMetaData(name, true, session.Application.Configuration); var pRtmpInFileStream = InFileRTMPStream.GetInstance(session, session.Application.StreamsManager, metadata); if (pRtmpInFileStream == null) { WARN("Unable to get file stream. Metadata:\n{0}", metadata.ToString()); goto case -999; } if (!pRtmpInFileStream.Initialize(metadata[Defines.CONF_APPLICATION_CLIENTSIDEBUFFER])) { WARN("Unable to initialize file inbound stream"); pRtmpInFileStream.Dispose(); goto case -999; } if (!pRtmpInFileStream.Link(outNetRtmfpStream)) { goto case -999; } if (!pRtmpInFileStream.Play(start, length)) { FATAL("Unable to start the playback"); goto case -999; } break; } return(outNetRtmfpStream); }