Skip to content

Хост ​

Prism.Host предоставляет доступ к видеофайлам: находит их в указанных папках и передаёт плеерам по сети. При необходимости преобразует видео на лету через FFmpeg. Установите хост на компьютер или сервер, которому доступны ваши диски и сетевые папки.

Установка в Windows через MSI ​

Установщик PrismHostSetup.msi устанавливает службу Prism Host, Launcher и FFmpeg. Для работы нужны ASP.NET Core Runtime 10 и .NET Desktop Runtime 10, версия x64.

  1. Запустите MSI и завершите установку.
  2. В C:\Program Files\Prism Host\appsettings.json укажите папки с видео в параметре Player:MediaDirectories.
  3. Перезапустите службу Prism Host через приложение «Службы».

Пример настройки папок — фрагмент файла конфигурации:

json
"Player": {
  "MediaDirectories": ["D:/Video", "E:/Movies"]
}

Служба запускается автоматически. Установщик добавляет правило брандмауэра для доступа из локальной сети. У учётной записи службы должен быть доступ к папкам с видео; подключённые диски пользователя могут быть ей недоступны.

Если MSI у вас нет, его можно собрать в Windows с .NET 10 SDK из корня репозитория:

powershell
dotnet build Prism.Host.Setup -c Release

Результат: Prism.Host.Setup/bin/Release/en-US/PrismHostSetup.msi. При сборке загружается FFmpeg, поэтому нужен доступ к интернету.

Перед обновлением сохраните свой appsettings.json: установщик может заменить его настройками по умолчанию.

Запуск из исходников ​

Подходит для Windows, Linux и macOS. Нужны .NET 10 SDK, ffmpeg и ffprobe. Последние два инструмента должны быть доступны в PATH либо указаны в настройках хоста.

Из корня репозитория:

sh
dotnet run --project Prism.Host.Console -- --media "/путь/к/видео"

В Windows вместо примера пути можно указать D:/Video. Параметр --media можно повторить для нескольких папок. Он добавляет папки к списку Player:MediaDirectories в Prism.Host.Console/appsettings.json, поэтому проверьте и этот список.

Хост работает, пока запущен процесс. По умолчанию он доступен на порту 8080.

После установки ​

Откройте http://адрес-хоста:8080/api/info: в ответе будут сведения о хосте и доступности FFmpeg. Добавьте этот хост в настройки библиотеки или Launcher.

Исходный код хоста

Формат конфигурации ​

Хост читает appsettings.json из корня приложения: для консольного запуска это Prism.Host.Console, для службы — папка установки. После изменения перезапустите хост. В JSON используйте двойные кавычки; пути удобно записывать с прямыми слешами, например D:/Video.

Минимальный пример полного файла:

json
{
  "Kestrel": {
    "Endpoints": {
      "Http": { "Url": "http://0.0.0.0:8080" }
    }
  },
  "Player": {
    "MediaDirectories": ["D:/Video"],
    "OutputCodec": "h264",
    "SubtitleFiles": ["{name}", "subs/{name}"],
    "AudioFiles": ["{name}"]
  },
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": { "Microsoft.AspNetCore": "Warning" }
    }
  }
}

Kestrel:Endpoints:Http:Url задаёт адрес прослушивания. 0.0.0.0 означает все сетевые интерфейсы; для подключения с других устройств используйте реальный IP-адрес компьютера. В поставляемом конфиге порт — 8080.

Папки и форматы — секция Player ​

Значения ниже используются, если соответствующий параметр не задан. Настройки в вашем файле могут их переопределять.

ПараметрТип / по умолчаниюНазначение
MediaDirectoriesМассив строк; ["videos"], если папки не заданыПапки с видео; относительные пути считаются от корня приложения
FfmpegPathСтрока; автоматический поискПуть к исполняемому файлу FFmpeg
FfprobePathСтрока; автоматический поискПуть к ffprobe для чтения сведений о файлах
OutputCodecСтрока; h264Кодек преобразованного видео: h264 или h265; H.264 совместим с большим числом плееров
SubtitleFilesМассив строк; ["{name}"]Шаблоны поиска внешних субтитров
AudioFilesМассив строк; ["{name}"]Шаблоны поиска внешних аудиодорожек

Шаблоны дорожек задаются относительно папки видео. {name} — имя видео без расширения. Например, рядом с Фильм.mkv шаблон {name} найдёт Фильм.srt и Фильм.Дубляж.ac3; подписью второй дорожки станет «Дубляж». Шаблон subs/{name} ищет субтитры во вложенной папке subs.

Преобразование видео — секция Player ​

Эти параметры можно оставить по умолчанию.

ПараметрПо умолчаниюЧто меняет
SegmentSeconds6Длина сегмента HLS в секундах
SessionMinutes15Длина участка, обрабатываемого одной сессией FFmpeg, в минутах
BufferBurstSeconds30Начальный запас видео в секундах, который готовится быстро; 0 отключает ограничение скорости чтения
MaxPlaybackRate2.0Скорость подготовки видео после начального запаса, относительно обычного воспроизведения
SessionIdleSeconds25Через сколько секунд без запросов останавливается сессия
EncoderPreset"veryfast"Пресет скорости и качества кодирования
Crf23Качество видео: меньшее значение даёт выше качество и больше объём данных
AudioBitrateKbps256Битрейт аудио AAC, кбит/с
AudioSampleRate48000Частота дискретизации аудио, Гц

Журнал и переопределение параметров ​

Serilog:MinimumLevel:Default задаёт уровень журналирования, например Information или Debug. В Override можно задавать уровни отдельным категориям. Журналы пишутся в консоль и папку logs в корне приложения.

Параметры можно переопределить переменными окружения: вместо : в имени используются два подчёркивания, например Player__OutputCodec=h265. Элемент массива задаётся индексом: Player__MediaDirectories__0=D:/Video. Это переопределяет элемент, а не очищает остальные элементы массива.

Для консольного запуска также доступны --media, --file, --codec и --ffmpeg. Параметры папок добавляются к конфигурации; --file подключает папку указанного файла.

Опубликовано под лицензией MIT