private IObservable <Unit> DownloadVideo(object?info) { return(Observable.Start(() => { try { if (info is not IList { Count: > 0 } list) { return; } foreach (var item in list) { if (item is not LiveRecordViewModel { Rid: not null and not @"" } liveRecord) { continue; } var root = Path.Combine(Config.MainDir, $@"{RoomId}", Constants.LiveRecordPath); var task = new LiveRecordDownloadTaskViewModel(_logger, _apiClient, liveRecord, root, Config.DownloadThreads); _taskList.AddTaskAsync(task, TaskQueueKeyConstants.LiveRecordKey).Forget(); } } catch (Exception ex) { _logger.LogError(ex, @"下载回放出错"); } })); }
private void CreateCutVideoTask() { try { if (string.IsNullOrWhiteSpace(CutInput) || string.IsNullOrWhiteSpace(CutOutput)) { return; } var args = string.Format(Constants.FFmpegSplitTo, CutStartTime, CutEndTime, CutInput, CutOutput); var task = new FFmpegTaskViewModel(args); _taskList.AddTaskAsync(task, Path.GetPathRoot(CutOutput) ?? string.Empty).NoWarning(); NewOutputFile(); } catch (Exception ex) { _logger.LogError(ex, @"创建剪辑任务时发生错误"); } }