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); }
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); } }