protected override void StartUpload(RecordVideoInfo info) { //TODO: 凭证失效时需要刷新凭证 var uploadAddressInfo = GetUploadAddress(info); var ossClient = new OssClient(uploadAddressInfo.UploadAddressInfo.Endpoint, uploadAddressInfo.UploadAuth.AccessKeyId, uploadAddressInfo.UploadAuth.AccessKeySecret, uploadAddressInfo.UploadAuth.SecurityToken); using (var fs = File.Open(Path.Combine(info.FileSavePath, info.FileName), FileMode.Open)) { var putObjectRequest = new PutObjectRequest(uploadAddressInfo.UploadAddressInfo.Bucket, uploadAddressInfo.UploadAddressInfo.FileName, fs); putObjectRequest.StreamTransferProgress += StreamTransferProgress; ossClient.PutObject(putObjectRequest); } var result = _serviceClient.GetResponse( _webPlatformApiFactory.CreateSaveAlibabaVodVideoIdRequest( uploadTaskInfo.RecordInfo.ScheduleId, uploadAddressInfo.CreateUploadVideoResponse.VideoId, info.VideoType.ToString(), uploadTaskInfo.RecordInfo.Index ) ); //TODO:videoid 保存成功时才能标记为上传完成 if (!result.Success) { uploadTaskInfo.UploadStatus = result.Message; return; } MarkFileUploadCompleted(info); }
private Tuple <bool, string> AppendFileContent(RecordVideoInfo info) { using (var fs = File.Open(Path.Combine(info.FileSavePath, info.FileName), FileMode.Open)) { var appendFileContentRequest = _webPlatformApiFactory.CreateAppendFileContentRequest(_endpoint, info.TempFileID, fs); appendFileContentRequest.StreamTransferProgress += StreamTransferProgress; var rsp = _serviceClient.GetResponse(appendFileContentRequest); return(WarpperResult(rsp.Success, rsp.Message)); } }
private CreateUploadVideoRequest CreateUploadVideoRequest(RecordVideoInfo info) { CreateUploadVideoRequest request = new CreateUploadVideoRequest { Title = uploadTaskInfo.RecordInfo.Title + info.VideoType, FileName = info.FileName }; return(request); }
private Tuple <bool, string> GetTempFileId(RecordVideoInfo info) { var rsp = _serviceClient.GetResponse(_webPlatformApiFactory.CreateTempFileRequest(_endpoint, info.FileName)); if (!rsp.Success) { return(WarpperResult(rsp.Success, rsp.Message)); } return(WarpperResult(rsp.Success, rsp.Value.TempFileId)); }
private CreateUploadVideoResponseResult GetUploadAddress(RecordVideoInfo info) { DefaultAcsClient client = InitVodClient(); CreateUploadVideoResponse response = client.GetAcsResponse(CreateUploadVideoRequest(info)); return(new CreateUploadVideoResponseResult() { CreateUploadVideoResponse = response, UploadAddressInfo = JsonConvert.DeserializeObject <UploadAddressInfo>(Encoding.UTF8.GetString(Convert.FromBase64String(response.UploadAddress))), UploadAuth = JsonConvert.DeserializeObject <UploadAuth>(Encoding.UTF8.GetString(Convert.FromBase64String(response.UploadAuth))) }); }
private Tuple <bool, string> _StartRecording() { lock (syncState) { int index = _config.VideoIndex; var state = _speechVideoLiveAndRecordProvider.RecordState; if (state == RecAndLiveState.NotStart) { _speechVideoRecordingInfo = CreateRecordingFileInfo(VideoType.VGA); _teacherVideoRecordingInfo = CreateRecordingFileInfo(VideoType.Video1); _recordInfo = new RecordInfo { Index = index, ScheduleId = _liveInfo.ScheduleID, StartRecordingTime = DateTime.Now, Title = _liveInfo.Title }; _recordInfo.VideoFiles.Add(_speechVideoRecordingInfo); _recordInfo.VideoFiles.Add(_teacherVideoRecordingInfo); } Tuple <bool, string> result = _speechVideoLiveAndRecordProvider.StartRecording(_config.RecFileSavePath, _speechVideoRecordingInfo.FileName); if (!result.Item1) { return(result); } result = _teacherVideoLiveAndRecordProvider.StartRecording(_config.RecFileSavePath, _teacherVideoRecordingInfo.FileName); if (!result.Item1) { _speechVideoLiveAndRecordProvider.StopRecording(); return(result); } StartRecordingBtnIsEnable = false; StopRecordingBtnIsEnable = PauseRecordingBtnIsEnable = true; if (state == RecAndLiveState.Pause) { _eventAggregator.GetEvent <LiveAndRecordingOperateEvent>().Publish(new LiveAndRecordingOperateEventContext(LiveAndRecordingOperateEventSourceType.Recording, LiveAndRecordingOperateEventType.Resume)); } else { _eventAggregator.GetEvent <LiveAndRecordingOperateEvent>().Publish(new LiveAndRecordingOperateEventContext(LiveAndRecordingOperateEventSourceType.Recording, LiveAndRecordingOperateEventType.Start)); } return(result); } }
protected override void StartUpload(RecordVideoInfo info) { var tempFileIdResult = GetTempFileId(info); if (!tempFileIdResult.Item1) { uploadTaskInfo.UploadStatus = tempFileIdResult.Item2; return; } info.TempFileID = tempFileIdResult.Item2; var appendFileContentResult = AppendFileContent(info); if (!appendFileContentResult.Item1) { uploadTaskInfo.UploadStatus = appendFileContentResult.Item2; return; } MarkFileUploadCompleted(info); }
protected abstract void StartUpload(RecordVideoInfo info);
protected void MarkFileUploadCompleted(RecordVideoInfo info) { info.UploadedCompleted[StorageInfo.ID] = true; }