public NewFFmpegProfileHandler(
     IResolutionRepository resolutionRepository,
     IConfigElementRepository configElementRepository)
 {
     _resolutionRepository    = resolutionRepository;
     _configElementRepository = configElementRepository;
 }
 protected FFmpegProcessHandler(
     IChannelRepository channelRepository,
     IConfigElementRepository configElementRepository)
 {
     _channelRepository       = channelRepository;
     _configElementRepository = configElementRepository;
 }
#pragma warning restore VSTHRD103

    private async Task <Unit> StartProcess(StartFFmpegSession request, CancellationToken cancellationToken)
    {
        TimeSpan idleTimeout = await _configElementRepository
                               .GetValue <int>(ConfigElementKey.FFmpegSegmenterTimeout)
                               .Map(maybeTimeout => maybeTimeout.Match(i => TimeSpan.FromSeconds(i), () => TimeSpan.FromMinutes(1)));

        using IServiceScope scope = _serviceScopeFactory.CreateScope();
        HlsSessionWorker worker = scope.ServiceProvider.GetRequiredService <HlsSessionWorker>();

        _ffmpegSegmenterService.SessionWorkers.AddOrUpdate(request.ChannelNumber, _ => worker, (_, _) => worker);

        // fire and forget worker
        _ = worker.Run(request.ChannelNumber, idleTimeout, cancellationToken)
            .ContinueWith(
            _ => _ffmpegSegmenterService.SessionWorkers.TryRemove(
                request.ChannelNumber,
                out IHlsSessionWorker _),
            TaskScheduler.Default);

        string playlistFileName = Path.Combine(
            FileSystemLayout.TranscodeFolder,
            request.ChannelNumber,
            "live.m3u8");

        IConfigElementRepository repo = scope.ServiceProvider.GetRequiredService <IConfigElementRepository>();
        int initialSegmentCount       = await repo.GetValue <int>(ConfigElementKey.FFmpegInitialSegmentCount)
                                        .Map(maybeCount => maybeCount.Match(identity, () => 1));

        await WaitForPlaylistSegments(playlistFileName, initialSegmentCount, worker, cancellationToken);

        return(Unit.Default);
    }
 public HardwareAccelerationHealthCheck(
     IDbContextFactory <TvContext> dbContextFactory,
     IConfigElementRepository configElementRepository)
 {
     _dbContextFactory        = dbContextFactory;
     _configElementRepository = configElementRepository;
 }
 public UpdateFFmpegSettingsHandler(
     IConfigElementRepository configElementRepository,
     ILocalFileSystem localFileSystem)
 {
     _configElementRepository = configElementRepository;
     _localFileSystem         = localFileSystem;
 }
Beispiel #6
0
 public FFmpegStreamSelector(
     ISearchRepository searchRepository,
     ILogger <FFmpegStreamSelector> logger,
     IConfigElementRepository configElementRepository)
 {
     _searchRepository        = searchRepository;
     _logger                  = logger;
     _configElementRepository = configElementRepository;
 }
Beispiel #7
0
 public UpdatePlayoutDaysToBuildHandler(
     IConfigElementRepository configElementRepository,
     IDbContextFactory <TvContext> dbContextFactory,
     ChannelWriter <IBackgroundServiceRequest> workerChannel)
 {
     _configElementRepository = configElementRepository;
     _dbContextFactory        = dbContextFactory;
     _workerChannel           = workerChannel;
 }
Beispiel #8
0
 public RebuildSearchIndexHandler(
     ISearchIndex searchIndex,
     ISearchRepository searchRepository,
     IConfigElementRepository configElementRepository,
     ILogger <RebuildSearchIndexHandler> logger)
 {
     _searchIndex             = searchIndex;
     _logger                  = logger;
     _searchRepository        = searchRepository;
     _configElementRepository = configElementRepository;
 }
Beispiel #9
0
 public GetLastPtsDurationHandler(
     IClient client,
     ILocalFileSystem localFileSystem,
     ITempFilePool tempFilePool,
     IConfigElementRepository configElementRepository,
     ILogger <GetLastPtsDurationHandler> logger)
 {
     _client                  = client;
     _localFileSystem         = localFileSystem;
     _tempFilePool            = tempFilePool;
     _configElementRepository = configElementRepository;
     _logger                  = logger;
 }
 public StartFFmpegSessionHandler(
     ILocalFileSystem localFileSystem,
     ILogger <StartFFmpegSessionHandler> logger,
     IServiceScopeFactory serviceScopeFactory,
     IFFmpegSegmenterService ffmpegSegmenterService,
     IConfigElementRepository configElementRepository)
 {
     _localFileSystem         = localFileSystem;
     _logger                  = logger;
     _serviceScopeFactory     = serviceScopeFactory;
     _ffmpegSegmenterService  = ffmpegSegmenterService;
     _configElementRepository = configElementRepository;
 }
 public ScanLocalLibraryHandler(
     ILibraryRepository libraryRepository,
     IConfigElementRepository configElementRepository,
     IMovieFolderScanner movieFolderScanner,
     ITelevisionFolderScanner televisionFolderScanner,
     IEntityLocker entityLocker,
     ILogger <ScanLocalLibraryHandler> logger)
 {
     _libraryRepository       = libraryRepository;
     _configElementRepository = configElementRepository;
     _movieFolderScanner      = movieFolderScanner;
     _televisionFolderScanner = televisionFolderScanner;
     _entityLocker            = entityLocker;
     _logger = logger;
 }
Beispiel #12
0
 public GetPlayoutItemProcessByChannelNumberHandler(
     IChannelRepository channelRepository,
     IConfigElementRepository configElementRepository,
     IPlayoutRepository playoutRepository,
     IMediaSourceRepository mediaSourceRepository,
     FFmpegProcessService ffmpegProcessService,
     ILocalFileSystem localFileSystem,
     ILogger <GetPlayoutItemProcessByChannelNumberHandler> logger)
     : base(channelRepository, configElementRepository)
 {
     _configElementRepository = configElementRepository;
     _playoutRepository       = playoutRepository;
     _mediaSourceRepository   = mediaSourceRepository;
     _ffmpegProcessService    = ffmpegProcessService;
     _localFileSystem         = localFileSystem;
     _logger = logger;
 }
Beispiel #13
0
 public SynchronizePlexLibraryByIdHandler(
     IMediaSourceRepository mediaSourceRepository,
     IConfigElementRepository configElementRepository,
     IPlexSecretStore plexSecretStore,
     IPlexMovieLibraryScanner plexMovieLibraryScanner,
     IPlexTelevisionLibraryScanner plexTelevisionLibraryScanner,
     ILibraryRepository libraryRepository,
     IEntityLocker entityLocker,
     ILogger <SynchronizePlexLibraryByIdHandler> logger)
 {
     _mediaSourceRepository        = mediaSourceRepository;
     _configElementRepository      = configElementRepository;
     _plexSecretStore              = plexSecretStore;
     _plexMovieLibraryScanner      = plexMovieLibraryScanner;
     _plexTelevisionLibraryScanner = plexTelevisionLibraryScanner;
     _libraryRepository            = libraryRepository;
     _entityLocker = entityLocker;
     _logger       = logger;
 }
Beispiel #14
0
 public SynchronizeJellyfinLibraryByIdHandler(
     IMediaSourceRepository mediaSourceRepository,
     IJellyfinSecretStore jellyfinSecretStore,
     IJellyfinMovieLibraryScanner jellyfinMovieLibraryScanner,
     IJellyfinTelevisionLibraryScanner jellyfinTelevisionLibraryScanner,
     ILibraryRepository libraryRepository,
     IEntityLocker entityLocker,
     IConfigElementRepository configElementRepository,
     ChannelWriter <IJellyfinBackgroundServiceRequest> jellyfinWorkerChannel,
     ILogger <SynchronizeJellyfinLibraryByIdHandler> logger)
 {
     _mediaSourceRepository            = mediaSourceRepository;
     _jellyfinSecretStore              = jellyfinSecretStore;
     _jellyfinMovieLibraryScanner      = jellyfinMovieLibraryScanner;
     _jellyfinTelevisionLibraryScanner = jellyfinTelevisionLibraryScanner;
     _libraryRepository       = libraryRepository;
     _entityLocker            = entityLocker;
     _configElementRepository = configElementRepository;
     _jellyfinWorkerChannel   = jellyfinWorkerChannel;
     _logger = logger;
 }
 public SynchronizeEmbyLibraryByIdHandler(
     IMediaSourceRepository mediaSourceRepository,
     IEmbySecretStore embySecretStore,
     IEmbyMovieLibraryScanner embyMovieLibraryScanner,
     IEmbyTelevisionLibraryScanner embyTelevisionLibraryScanner,
     ILibraryRepository libraryRepository,
     IEntityLocker entityLocker,
     IConfigElementRepository configElementRepository,
     ChannelWriter <IEmbyBackgroundServiceRequest> embyWorkerChannel,
     ILogger <SynchronizeEmbyLibraryByIdHandler> logger)
 {
     _mediaSourceRepository        = mediaSourceRepository;
     _embySecretStore              = embySecretStore;
     _embyMovieLibraryScanner      = embyMovieLibraryScanner;
     _embyTelevisionLibraryScanner = embyTelevisionLibraryScanner;
     _libraryRepository            = libraryRepository;
     _entityLocker            = entityLocker;
     _configElementRepository = configElementRepository;
     _embyWorkerChannel       = embyWorkerChannel;
     _logger = logger;
 }
 public ScanLocalLibraryHandler(
     ILibraryRepository libraryRepository,
     IConfigElementRepository configElementRepository,
     IMovieFolderScanner movieFolderScanner,
     ITelevisionFolderScanner televisionFolderScanner,
     IMusicVideoFolderScanner musicVideoFolderScanner,
     IOtherVideoFolderScanner otherVideoFolderScanner,
     ISongFolderScanner songFolderScanner,
     IEntityLocker entityLocker,
     IMediator mediator,
     ILogger <ScanLocalLibraryHandler> logger)
 {
     _libraryRepository       = libraryRepository;
     _configElementRepository = configElementRepository;
     _movieFolderScanner      = movieFolderScanner;
     _televisionFolderScanner = televisionFolderScanner;
     _musicVideoFolderScanner = musicVideoFolderScanner;
     _otherVideoFolderScanner = otherVideoFolderScanner;
     _songFolderScanner       = songFolderScanner;
     _entityLocker            = entityLocker;
     _mediator = mediator;
     _logger   = logger;
 }
Beispiel #17
0
 public FFmpegLocator(IConfigElementRepository configElementRepository) =>
 public GetPlayoutDaysToBuildHandler(IConfigElementRepository configElementRepository) =>
 public GetFFmpegSettingsHandler(IConfigElementRepository configElementRepository) =>
Beispiel #20
0
 public GetConcatProcessByChannelNumberHandler(
     IChannelRepository channelRepository,
     IConfigElementRepository configElementRepository,
     FFmpegProcessService ffmpegProcessService)
     : base(channelRepository, configElementRepository) =>
 public SaveConfigElementByKeyHandler(IConfigElementRepository configElementRepository) =>
Beispiel #22
0
 public UpdateLibraryRefreshIntervalHandler(IConfigElementRepository configElementRepository) =>
Beispiel #23
0
 public FFmpegVersionHealthCheck(IConfigElementRepository configElementRepository) =>
 public UpdateHDHRTunerCountHandler(IConfigElementRepository configElementRepository) =>
 public FFmpegReportsHealthCheck(IConfigElementRepository configElementRepository) =>