コード例 #1
0
        private async void HandlePublish(IChannelHandlerContext ctx, RtmpCommandMessage msg)
        {
            logger.Info($"publish :{msg}");
            _tag = RtmpTag.Publisher;
            var streamType = msg.Command[4].ToString();

            if (streamType != "live")
            {
                await ctx.Channel.DisconnectAsync();
            }
            var name = msg.Command[3].ToString();

            _streamName.Name = name;
            CreateStream(ctx);
            RtmpCommandMessage onStatus = OnStatus("status", "NetStream.Publish.Start", "Start publishing");
            await ctx.WriteAndFlushAsync(onStatus);
        }
コード例 #2
0
        private async void HandlePlay(IChannelHandlerContext ctx, RtmpCommandMessage msg)
        {
            _tag = RtmpTag.Subscriber;
            var name = (String)msg.Command[3];

            _streamName.Name = name;
            var stream = _mediaStreamDic.GetValueOrDefault(_streamName);

            if (stream == null)
            {
                logger.Info($"client play request for stream:{nameof(_streamName)} not exist.");
                RtmpCommandMessage onStatus = OnStatus("error", "NetStream.Play.StreamNotFound", "No Such Stream");
                await ctx.WriteAndFlushAsync(onStatus);

                _normalShutdown = true;
                await ctx.Channel.CloseAsync();
            }
            else
            {
                StartPlay(ctx, stream);
            }
        }