Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
        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);
            }
        }