示例#1
0
 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>();
 }
示例#2
0
 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>();
 }
示例#3
0
        /// <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);
            }
        }