private void RegisterHttpFlvProtocol(ContainerBuilderWrapper builder, LiveStreamOption options) { builder.Register(provider => { return(new HttpFlvMessageListener(provider.Resolve <ILogger <HttpFlvMessageListener> >(), provider.Resolve <IMediaStreamProvider>().GetMediaStream() )); }).SingleInstance(); builder.Register(provider => { var messageListener = provider.Resolve <HttpFlvMessageListener>(); return(new HttpFlvServiceHost(async endPoint => { await messageListener.StartAsync(endPoint); return messageListener; })); }).As <IServiceHost>(); }
private void RegisterRtmpProtocol(ContainerBuilderWrapper builder, LiveStreamOption options) { builder.Register(provider => { return(new RtmpMessageListener(provider.Resolve <ILogger <RtmpMessageListener> >(), options.EnableLog? provider.Resolve <ILoggerFactory>() : new LoggerFactory(), provider.Resolve <IMediaStreamProvider>().GetMediaStream() )); }).SingleInstance(); builder.Register(provider => { var messageListener = provider.Resolve <RtmpMessageListener>(); var serviceExecutor = provider.ResolveNamed <IServiceExecutor>("Rtmp"); return(new RtmpServiceHost(serviceExecutor, async endPoint => { await messageListener.StartAsync(endPoint); return messageListener; })); }).As <IServiceHost>(); }
/// <summary> /// Inject dependent third-party components /// </summary> /// <param name="builder"></param> protected override void RegisterBuilder(ContainerBuilderWrapper builder) { var options = new LiveStreamOption(); var section = CPlatform.AppConfig.GetSection("LiveStream"); if (section.Exists()) { options = section.Get <LiveStreamOption>(); } AppConfig.Option = options; builder.RegisterType(typeof(RtmpRemoteInvokeService)).As(typeof(IRtmpRemoteInvokeService)).SingleInstance(); builder.RegisterType(typeof(MediaStreamProvider)).As(typeof(IMediaStreamProvider)).SingleInstance(); builder.RegisterType(typeof(LiveStreamServiceExecutor)).Named("Rtmp", typeof(IServiceExecutor)).SingleInstance(); base.RegisterBuilder(builder); RegisterRtmpProtocol(builder, options); if (AppConfig.Option.EnableHttpFlv) { RegisterHttpFlvProtocol(builder, options); } }