Exemple #1
0
        public async Task <IHttpActionResult> DefaultPlayDone()
        {
            var stream = await Request.Content.ReadAsStreamAsync();

            stream.Position = 0;
            CallbackResponseBase obj = null;

            using (var sr = new StreamReader(stream))
            {
                var json = await sr.ReadToEndAsync();

                obj = JsonConvert.DeserializeObject <CallbackResponseBase>(json);
            }
            stream.Close();
            BoardCastRoomModel liveRoomModel = await VhostService.GetLiveRoomByStreamName(obj.stream);

            if (liveRoomModel != null)
            {
                Scheduler.GetInstance().ProcessPostTask(liveRoomModel.PlayEndUrl, JsonConvert.SerializeObject(new
                {
                    Action     = 4,
                    AppName    = "live",
                    StreamName = obj.stream,
                }));
                LogHelper.Error("推送信息: " + obj);
            }
            return(Content(HttpStatusCode.OK, 0));
        }
Exemple #2
0
        public async Task <IHttpActionResult> CreateRoom([FromBody] BoardCastRoomModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                if (model.ExpireTime.Equals(new DateTime()))
                {
                    model.ExpireTime = DateTime.Now.AddDays(2);
                }
                var id = Guid.NewGuid().Str();
                try
                {
                    model.Id = id;
                    ServiceResultMessage result = await VhostService.CreateLiveRoom(ThreadStaticObject.UserId, model);

                    if (result.code == ServiceResultCode.Success)
                    {
                        string publishUrl  = $"rtmp://{model.Domain}/live/?{CreatePublishTokenAuth(ThreadStaticObject.UserId, model.StreamName,model.ExpireTime.Ticks)}/{model.StreamName}";
                        string audienceUrl = $"rtmp://{model.Domain}/live/?{CreateAudinceTokenAuth(ThreadStaticObject.UserId, model.StreamName, model.ExpireTime.Ticks)}/{model.StreamName}";
                        return(Json(new DjLiveResponse <dynamic>(new
                        {
                            PublishUrl = publishUrl,
                            PlayUrl = audienceUrl,
                        })));
                    }
                    return(Json(new DjLiveResponse <dynamic>()
                    {
                        ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{result.ErrorId} {result.Message}"
                    }));
                }
                catch (Exception e)
                {
                    //todo:判断异常原因
                    return(Json(new DjLiveResponse <dynamic>(model)
                    {
                        ApiCode = ApiCode.Conflict,
                        Message = "数据库中添加失败.",
                    }));
                }
            }
            catch (Exception e)
            {
                var errorId = Guid.NewGuid().Str();
                LogHelper.Error(errorId, e);
                return(Json(new DjLiveResponse <dynamic>()
                {
                    ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{errorId}"
                }));
            }
        }
        public async Task <ServiceResultMessage> CreateLiveRoom(string userId, BoardCastRoomModel model)
        {
            if (model == null)
            {
                return new ServiceResultMessage()
                       {
                           code = ServiceResultCode.UnDefineError, Message = "传入对象为空,请检查参数.."
                       }
            }
            ;
            try
            {
                // var domain = DomainDao.GetDomainCount(userId);//通过Domain 确定是否存在DomainNode

                var entity = new BoardCastRoomEntity()
                {
                    Id                  = model.Id,
                    Domain              = model.Domain,
                    Name                = model.Name,
                    AppName             = string.IsNullOrEmpty(model.AppName) ? "live" : model.AppName,
                    ExpireTime          = model.ExpireTime.Equals(new DateTime()) ? DateTime.Now.AddDays(2) : model.ExpireTime,
                    PlayEndNotifyUrl    = model.PlayEndUrl,
                    PlayNotifyUrl       = model.PlayNotifyUrl,
                    PublishEndNotifyUrl = model.PublishEndUrl,
                    PublishNotifyUrl    = model.PublishNotifyUrl,
                    StreamName          = model.StreamName.ToLower(),
                    State               = 1,
                };

                DaoResultMessage daoresult = await BoardcastRoomDao.CreateRoom(entity);

                return((ServiceResultMessage)ServiceResultBase.DaoResult2ServiceResult(daoresult));
            }
            catch (Exception e)
            {
                LogHelper.Error(e.Message, e);
                return(null);
            }
        }