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