private async ValueTask UpdateProfile(FFmpegProfileViewModel existing) { var updateFFmpegProfile = new UpdateFFmpegProfile( existing.Id, Name, ThreadCount, Transcode, (int)Resolution, NormalizeResolution, VideoCodec, NormalizeVideoCodec, VideoBitrate, VideoBufferSize, AudioCodec, NormalizeAudioCodec, AudioBitrate, AudioBufferSize, AudioVolume, AudioChannels, AudioSampleRate, NormalizeAudio); await _ffmpegProfileApi.ApiFfmpegProfilesPatchAsync(updateFFmpegProfile); _logger.LogInformation("Successfully synchronized ffmpeg profile {ProfileName}", Name); }
private async ValueTask RenameChannel(ChannelViewModel existing, FFmpegProfileViewModel ffmpegProfile) { int newFFmpegProfileId = string.IsNullOrWhiteSpace(FFmpegProfileName) ? existing.FfmpegProfileId : ffmpegProfile.Id; if (existing.Name != Name || existing.FfmpegProfileId != newFFmpegProfileId || existing.StreamingMode != StreamingMode) { var updateChannel = new UpdateChannel( existing.Id, Name, existing.Number, newFFmpegProfileId, existing.Logo, StreamingMode); await _channelsApi.ApiChannelsPatchAsync(updateChannel); } _logger.LogInformation( "Successfully synchronized channel {ChannelNumber} - {ChannelName}", Number, Name); }
private async ValueTask AddChannel(FFmpegProfileViewModel ffmpegProfile) { var createChannel = new CreateChannel( Name, Number, ffmpegProfile.Id, null, StreamingMode); await _channelsApi.ApiChannelsPostAsync(createChannel); _logger.LogInformation( "Successfully created channel {ChannelNumber} - {ChannelName}", Number, Name); }
public FFmpegProfileEditViewModel(FFmpegProfileViewModel viewModel) { AudioBitrate = viewModel.AudioBitrate; AudioBufferSize = viewModel.AudioBufferSize; AudioChannels = viewModel.AudioChannels; AudioFormat = viewModel.AudioFormat; AudioSampleRate = viewModel.AudioSampleRate; NormalizeLoudness = viewModel.NormalizeLoudness; Id = viewModel.Id; Name = viewModel.Name; NormalizeFramerate = viewModel.NormalizeFramerate; DeinterlaceVideo = viewModel.DeinterlaceVideo; Resolution = viewModel.Resolution; ThreadCount = viewModel.ThreadCount; HardwareAcceleration = viewModel.HardwareAcceleration; VaapiDriver = viewModel.VaapiDriver; VaapiDevice = viewModel.VaapiDevice; VideoBitrate = viewModel.VideoBitrate; VideoBufferSize = viewModel.VideoBufferSize; VideoFormat = viewModel.VideoFormat; }
public FFmpegProfileEditViewModel(FFmpegProfileViewModel viewModel) { AudioBitrate = viewModel.AudioBitrate; AudioBufferSize = viewModel.AudioBufferSize; AudioChannels = viewModel.AudioChannels; AudioCodec = viewModel.AudioCodec; AudioSampleRate = viewModel.AudioSampleRate; AudioVolume = viewModel.AudioVolume; Id = viewModel.Id; Name = viewModel.Name; NormalizeAudio = viewModel.NormalizeAudio; NormalizeAudioCodec = viewModel.NormalizeAudioCodec; NormalizeResolution = viewModel.NormalizeResolution; NormalizeVideoCodec = viewModel.NormalizeVideoCodec; Resolution = viewModel.Resolution; ThreadCount = viewModel.ThreadCount; Transcode = viewModel.Transcode; HardwareAcceleration = viewModel.HardwareAcceleration; VideoBitrate = viewModel.VideoBitrate; VideoBufferSize = viewModel.VideoBufferSize; VideoCodec = viewModel.VideoCodec; }
public async ValueTask ExecuteAsync(IConsole console) { try { Option <ChannelViewModel> maybeChannel = await _channelsApi.ApiChannelsGetAsync() .Map(list => Optional(list.SingleOrDefault(c => c.Number == Number))); FFmpegProfileViewModel ffmpegProfile = await _ffmpegProfileApi.ApiFfmpegProfilesGetAsync() .Map( list => Optional(list.SingleOrDefault(p => p.Name == FFmpegProfileName)) .IfNone(new FFmpegProfileViewModel { Id = 1 })); await maybeChannel.Match( channel => RenameChannel(channel, ffmpegProfile), () => AddChannel(ffmpegProfile)); } catch (Exception ex) { _logger.LogError("Unable to synchronize channel: {Message}", ex.Message); } }