Хост
Prism.Host предоставляет доступ к видеофайлам: находит их в указанных папках и передаёт плеерам по сети. При необходимости преобразует видео на лету через FFmpeg. Установите хост на компьютер или сервер, которому доступны ваши диски и сетевые папки.
Установка в Windows через MSI
Установщик PrismHostSetup.msi устанавливает службу Prism Host, Launcher и FFmpeg. Для работы нужны ASP.NET Core Runtime 10 и .NET Desktop Runtime 10, версия x64.
- Запустите MSI и завершите установку.
- В
C:\Program Files\Prism Host\appsettings.jsonукажите папки с видео в параметреPlayer:MediaDirectories. - Перезапустите службу Prism Host через приложение «Службы».
Пример настройки папок — фрагмент файла конфигурации:
"Player": {
"MediaDirectories": ["D:/Video", "E:/Movies"]
}Служба запускается автоматически. Установщик добавляет правило брандмауэра для доступа из локальной сети. У учётной записи службы должен быть доступ к папкам с видео; подключённые диски пользователя могут быть ей недоступны.
Если MSI у вас нет, его можно собрать в Windows с .NET 10 SDK из корня репозитория:
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 либо указаны в настройках хоста.
Из корня репозитория:
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.
Минимальный пример полного файла:
{
"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
Эти параметры можно оставить по умолчанию.
| Параметр | По умолчанию | Что меняет |
|---|---|---|
SegmentSeconds | 6 | Длина сегмента HLS в секундах |
SessionMinutes | 15 | Длина участка, обрабатываемого одной сессией FFmpeg, в минутах |
BufferBurstSeconds | 30 | Начальный запас видео в секундах, который готовится быстро; 0 отключает ограничение скорости чтения |
MaxPlaybackRate | 2.0 | Скорость подготовки видео после начального запаса, относительно обычного воспроизведения |
SessionIdleSeconds | 25 | Через сколько секунд без запросов останавливается сессия |
EncoderPreset | "veryfast" | Пресет скорости и качества кодирования |
Crf | 23 | Качество видео: меньшее значение даёт выше качество и больше объём данных |
AudioBitrateKbps | 256 | Битрейт аудио AAC, кбит/с |
AudioSampleRate | 48000 | Частота дискретизации аудио, Гц |
Журнал и переопределение параметров
Serilog:MinimumLevel:Default задаёт уровень журналирования, например Information или Debug. В Override можно задавать уровни отдельным категориям. Журналы пишутся в консоль и папку logs в корне приложения.
Параметры можно переопределить переменными окружения: вместо : в имени используются два подчёркивания, например Player__OutputCodec=h265. Элемент массива задаётся индексом: Player__MediaDirectories__0=D:/Video. Это переопределяет элемент, а не очищает остальные элементы массива.
Для консольного запуска также доступны --media, --file, --codec и --ffmpeg. Параметры папок добавляются к конфигурации; --file подключает папку указанного файла.