TL; DR
ПЕРЕД ОБНОВЛЕНИЕМ НА JELLYFIN 12.0 ОБЯЗАТЕЛЬНО ПРОЧИТАЙТЕ ЭТОТ РАЗДЕЛ! Пренебрежение этим может привести к проблемам. Если что-то непонятно, не стесняйтесь попросить помощь в нашем чате.
В этом релизе изменяется схема базы данных и активно переписываются данные при первом запуске. Вернуться на предыдущую версию можно только через резервную копию.
-
Как всегда при крупных обновлениях, ОСТАНОВИТЕ Jellyfin и сделайте ПОЛНУЮ РУЧНУЮ РЕЗЕРВНУЮ КОПИЮ ДАННЫХ И КОНФИГУРАЦИИ перед обновлением!
-
Перед обновлением на 12.0 необходимо использовать 10.10.7 или любой релиз 10.11.x. Прямое обновление с 10.11.x полностью поддерживается и промежуточные шаги не требуются. Если установлена более старая версия чем 10.10.7, сначала обновитесь до 10.10.7, а затем до 12.0.
-
Проверьте имена пользователей перед обновлением. Имена пользователей теперь чувствительны к регистру, поэтому два аккаунта не могут иметь имена, отличающиеся только по написанию букв. Если у вас есть такие пользователи, миграция базы данных не пройдёт.
-
После обновления ТРЕБУЕТСЯ полное сканирование библиотеки. При переработке хранения альтернативных версий автоматически сгруппированные версии (не вручную объединённые) очищаются. До запуска сканирования версии будут выглядеть отсутствующими.
-
Первое сканирование после обновления займёт значительно больше времени, чем обычно, и некоторые фильмы могут появиться как недавно добавленные. Это нормально. Jellyfin теперь проверяет каждый элемент библиотеки против файлов на диске для удаления остатков предыдущих версий, и некорректно отсортированное содержимое исправляется по ходу работы. Не останавливайте сервер во время миграции.
-
После установки убедитесь, что вы выполнили полное обновление страницы (например Ctrl+Shift+R) и/или очистили веб-кэш вашего экземпляра Jellyfin, если заметите какие-либо проблемы с интерфейсом. Невалидный кэшированный контент — #1 причина таких проблем.
-
Удалите все плагины третьих сторон перед обновлением. Плагины, собранные для 10.11, не будут загружаться на 12.0 и требуют обновлённых версий от авторов. Дайте им время на обновление перед повторной установкой. Официальные плагины уже обновлены для поддержки 12.0.
-
Очень старые клиенты третьих сторон перестанут работать. Поддержка старых адресов
/emby/и/mediabrowser/удалена, а устаревший способ входа теперь отключён, включая существующие серверы. Клиенты, не получавшие обновления годами, в группе риска. -
Этот релиз содержит исправления безопасности. Рекомендуется обновиться, когда вы будете готовы, вместо того чтобы оставаться на старой версии.
-
Как всегда при крупных релизах Jellyfin, ошибки будут существовать. Помечайте отчёты об ошибках префиксом "[12.0]", чтобы мы быстро их разбирали, и снова посмотрите пункт 1: сделайте резервную копию.
Теперь к новым возможностям!
Почему 12.0?
Наиболее заметное изменение в этом релизе — оно же видно в названии: убирается мажорная версия «10» из схемы нумерации. То, что было бы 10.12.0, теперь просто 12.0, и сервер сообщает версию как 12.0.0. 10.11.x — последний релиз ветки со старой схемой.
Причина в обратной связи, полученной после 10.11.0, которую впервые подняли в январе и подтвердили в мае. Релиз вроде 10.11.0 по любым разумным меркам был мажорным — переписывал базу данных библиотеки — но номер версии преподносил его как минорное обновление, и люди обновлялись с соответствующими ожиданиями. Первый 10. никогда не менялся и никому ничего не говорил, так что всё, что он делал — сдвигал важное число в середину позиции и делал «мажорные» релизы выглядящими минорными. Убрав его, мы перемещаем первый номер при крупном релизе.
Если вы поддерживаете что-либо, что парсит строки версии Jellyfin — клиент, проверку мониторинга, скрипт развёртывания, pin тега контейнера — это то, на что стоит посмотреть перед обновлением.
Настройка новой базы данных
Jellyfin 10.11.0 завершил переработку работы базы данных библиотеки, что открыло дверь для работы с производительностью в этом релизе. Мы не закончили, но при просмотре вы должны заметить большую разницу.
Одно из крупнейших изменений — как хранятся плейлисты и коллекции. Раньше всё содержимое плейлиста хранилось как один большой список внутри самого плейлиста, и база данных не могла заглянуть в этот список. Всё, что нам нужно было узнать, требовало загрузки целого плейлиста и его распаковки. Получение количества элементов, выяснение того, сколько вы посмотрели, или показ одной страницы стоили столько же, сколько загрузка всего этого. Редактирование было той же историей: добавление или удаление одного элемента требовало переписания всего списка назад.
Теперь каждый элемент в плейлисте — это своя строка. База данных может считать строки, вернуть одну страницу и добавить или удалить один элемент, не трогая остальное, так что это должно быть большим улучшением для больших плейлистов. Коллекции и боксеты хранились тем же способом и получают то же исправление.
Наряду с этим:
- Удаление большого количества элементов сразу больше не зависает на полпути.
- Продолжение просмотра, Дальше, Переосмотр, Последнее добавленное для музыки, поиск артистов и счётчики просмотров на папках должны быть быстрее.
- Тяжёлое обслуживание базы данных больше не запускается во время сканирования библиотеки, поэтому они перестают конкурировать за одни и те же ресурсы.
Большая часть этого проявляется как страницы, которые раньше зависали, теперь больше не зависают.
Стоит отметить, что эта работа пошла в то, как Jellyfin читает вашу библиотеку, а не в сканер библиотеки. Может быть, вы заметите, что сканер немного быстрее как побочный эффект, но его ускорение не было целью на этот раз.
Что запускается при первой загрузке
Как обычно, новый релиз Jellyfin поставляется с несколькими миграциями базы данных. Эти миграции займут некоторое время в зависимости от размера вашей библиотеки и количества накопленных плохих данных.
Если вы предпочитаете запустить этот шаг намеренно вместо того, чтобы это происходило при первом запуске, сервер теперь принимает --mode MigrateSystem, который выполняет обновление и выходит без запуска остальной части Jellyfin.
Несколько версий для серий
Альтернативные версии были функцией только для фильмов с момента их введения. В 12.0 они работают и для серий, так что серия с трансляционной версией и расширённой версией, или копии 1080p и 4K одного эпизода, могут группироваться так, как это всегда могли фильмы. Это включает данные возобновления, которые следуют версии, которую вы фактически смотрели.
Это также функция, стоящая за требуемым сканированием после обновления: заставить версии работать правильно для серий означало исправление того, как сохраняются ссылки версий, и автоматически разрешённые версии должны быть перестроены из файлов на диске.
Книги и комиксы, правильно на этот раз
Книги часто отодвигались на второй план в пользу видеоплеера в Jellyfin, и этот релиз — начало усилий по изменению этого. Большая часть того, что плагин Bookshelf раньше делал, теперь перемещена в сам сервер.
На сервере:
- Метаданные книги считываются непосредственно из файлов OPF и ComicInfo, или из комментариев ComicBookInfo, без необходимости в плагине.
- Постеры генерируются для EPUB и всех поддерживаемых форматов комик-архивов, и внешние обложки работают для файлов аудиокниг.
- Имя, индекс, год и серия считываются из имён файлов книг, и номера тома и главы собираются из имён файлов комиков, когда они присутствуют.
- Количество страниц извлекается из архивов комиков и PDF.
- Главы извлекаются из аудиокниг.
- Bookshelf разбит на отдельные провайдеры GoogleBooks и ComicVine, и новый плагин OpenLibrary предоставляет метаданные и изображения.
- ISBN внешние ID и ссылки поддерживаются.
В веб-клиенте:
- Существует современная раскладка библиотеки книг с типами просмотров и постраничностью, плюс вкладки Авторы, Коллекции и Папки.
- Книги показывают информацию об их авторах, и авторы показывают свои книги и аудиокниги.
- Интерфейс чтения был переработан и стандартизирован во всех типах книг, с единым поведением полноэкранности и навигацией жестами для PDF.
- Индикаторы прогресса снова работают для поддерживаемых электронных книг, сортировка по номеру индекса и дате выпуска доступна, и выбор размера шрифта для EPUB улучшен.
- Фоновое воспроизведение аудиокниг работает на устройствах iOS.
Плагин Bookshelf объявлен устаревшим. Его функции объединены в сервер или извлечены в провайдеры ComicVine и GoogleBooks.
Лучшие рекомендации и поиск, который могут расширять плагины
Откуда «больше похожего» и строки предложений получают свои идеи, больше не фиксировано. Вы теперь выбираете источник на библиотеку в том же месте, где уже выбираете провайдеров метаданных, так что вы можете использовать один источник для фильмов и другой для музыки.
ListenBrainz поставляется с сервером как один из этих источников. Направьте вашу библиотеку музыки на него, и рекомендации похожих артистов придут из реальных данных прослушивания, а не только из тегов.
Поиск работает так же: плагин может добавить свои собственные результаты наряду со своими собственными. Если вы когда-либо хотели, чтобы Jellyfin искал где-то ещё одновременно, это теперь плагин вместо форка. Обе системы описаны для авторов плагинов в примечаниях к релизу.
Современный макет теперь по умолчанию
Раскладка, которая была доставлена как «экспериментальная», теперь просто раскладка Modern, и на рабочем столе и мобильной она по умолчанию для всех, кто не выбрал иное. Предыдущая раскладка всё ещё доступна и теперь называется Legacy. Телевизоры не изменились: устройства ТВ продолжают использовать раскладку TV, которая всё ещё работает на старом приложении.
Наряду с тем, что это сделано по умолчанию, раскладка получила полировку, которая это подразумевает:
- Все темы — Dark, Light, WMC, Blue Radiance, Apple TV и Purple Haze — теперь происходят от общей базовой темы, построенной на переменных CSS. Если вы поддерживаете пользовательскую тему, это стоит посмотреть.
- Панель инструментов библиотеки была объединена в панель приложения с липким заголовком библиотеки.
- Вкладки Коллекции и Плейлисты доступны на всех библиотеках, и коллекции появляются на страницах деталей элемента.
- Музыкальные видео, Смешанные медиа, Коллекции и Плейлисты, и просмотры Книг были все обновлены, и домашние видео и библиотеки Фотографий получили опции вкладок по умолчанию и просмотр папок.
- Новые фильтры для языков аудио и субтитров, кнопка Сброс фильтров и поиск студии.


Изменения, которые вы можете заметить после обновления
Несколько вещей ведут себя иначе, чем на 10.11, помимо удалений старых клиентов, рассмотренных выше:
- Настройки субтитров теперь настраиваются на библиотеку вместо один раз для всего сервера, поэтому старые опции субтитров на уровне сервера больше не существуют.
- Сортировка более согласована, что означает, что некоторые библиотеки будут упорядочены немного иначе, чем вы привыкли.
- Изображение больше не растягивается за его реальный размер. Постеры низкого разрешения теперь отображаются при своём реальном размере вместо раздувания, чтобы поместиться, что выглядит меньше, но резче.
- Файлы
.oggобрабатываются как аудио, а не видео. Если у вас были видеофайлы.ogg, они будут пересортированы при следующем сканировании. - Имена пользователей теперь можно менять между прописными и строчными буквами. Как часть этого, два аккаунта больше не могут иметь имена, отличающиеся только по регистру букв. Если на вашем сервере есть имена пользователей, отличающиеся только по регистру, миграция базы данных не пройдёт.
- Символические ссылки на медиа следуют при воспроизведении чего-либо, а не при сканировании библиотеки.
Безопасность
Этот релиз включает ряд исправлений безопасности как на сервере, так и на веб-клиенте. Несколько из них закрывают способы, которыми специально сформированный запрос мог достичь файлов вне директорий, которые должна обслуживать Jellyfin. Другие предотвращают повторный запуск мастера установки на неправильно настроенном сервере без входа, отклоняют пакеты плагинов с небезопасными именами, применяют родительский контроль в большем количестве мест и исправляют проблемы межсайтового скриптинга в веб-клиенте.
Новые функции и улучшения
Пользовательский опыт — веб-клиент
- Приглашение «всё ещё смотришь».
,и.прокручивают кадр за кадром во время воспроизведения.- Названия глав появляются во всплывающей подсказке при перетягивании по полосе поиска, и оверлей информации о воспроизведении более компактен при отображении большего количества деталей.
- Папки могут быть отмечены как просмотренные.
- Улучшенный вид Предстоящего, кнопки Воспроизвести всё и Перемешать на библиотеках серий.
- Заставка подавляется при просмотре фотографий или чтении, и настройка времени заставки доступна в современной раскладке.
- Члены съёмочной группы с несколькими ролями объединяются в одну карточку, и создатели телешоу появляются на страницах деталей.
- Настраиваемая задержка для слайд-шоу фотографий.
- Веб-клиент кэширует больше данных в вашем браузере, поэтому экраны, которые вы уже посещали, возвращаются быстрее, и изображение больше не выглядит размытым на дисплеях высокого разрешения.
- Исправления навигации игровых контроллеров, сочетания клавиш, работающие на раскладках клавиатуры, не относящихся к латинице, и поддержка кнопок перемотки назад и ускорения на пультах.
Опыт администратора — веб-клиент
- Просмотр логов может следовать логу в реальном времени вместо необходимости обновления.
- Сортировка и фильтрация на странице Активность.
- Источник данных похожего элемента и рекомендации настраиваются на библиотеку.
- Jellyfin теперь отмечает свои директории кэша с
CACHEDIR.tag, поэтому инструменты резервного копирования знают, чтобы пропустить их вместо резервного копирования этих файлов. - Клиенты могут запросить ответы на конкретном языке, поэтому сервер с пользователями, предпочитающими разные языки, ведёт себя лучше.
- Файл базы данных может храниться в другом месте, чем место по умолчанию.
- Отключённые плагины больше не переактивируются при перезагрузке.
- Резервные копии больше не зависают полностью, когда срочные на повреждённый запись, и вы теперь получите предупреждение перед восстановлением резервной копии, или перед запуском одной во время сканирования библиотеки.
- Переформатированный интерфейс запуска, который показывает информацию о версии и активности.
- Коллекции и плейлисты могут быть отфильтрованы по библиотеке, поэтому каждая библиотека может показывать только свои.
- Больше способов фильтрации при поиске людей, опция предпочитать оригинальный язык названия для аудио и новый список «Коллекции» на страницах элементов.
- Живое ТВ: изображения XMLTV в фоне и эскизы эпизодов импортируются, недостижимые URL-адреса потоков «локального сервера» больше не возвращаются клиентам, и импорт руководства XMLTV теперь пропускает программы, данные которых не изменились, что делает повторные обновления руководства значительно дешевле.
- Метаданные: ID TVDB работают для фильмов, поиск по AudioDb артистов, прирост альбома ReplayGain читается из музыкальных файлов, поиск MusicBrainz более устойчив, теги WEB-DL в имена файлов признаны, и ID провайдеров могут быть установлены на имена папок сезона и эпизода.
- Теперь поддерживаются фигурные скобки и скобки наряду с существующими квадратными скобками для парсинга значений идентификатора провайдера. Новые псевдонимы также поддерживаются: tvdb для tvdbid, imdb для imdbid и tmdb для tmdbid.
- Задача оптимизации базы данных теперь анализирует и пылесосит БД при запуске и при завершении.
- Задача обновления людей теперь правильно очищает удалённых людей и проверяет обновления для людей с недостающими изображениями.
- Живое ТВ: EPG теперь соблюдает коды ошибок SchedulesDirect API, предотвращая блокировки. Тюнеры HDHomeRun теперь будут прямым воспроизведением на клиентах, которые это поддерживают. Тюнеры M3U больше не будут прямым воспроизведением и вместо этого будут переупаковать по умолчанию.
- Изображение плейлистовой библиотеки теперь может быть установлено для всех пользователей через Менеджер метаданных. Дублирующие треки теперь разрешены в плейлистах.
Трансформирование и обработка медиа
- Мы перешли на новый восходящий FFmpeg 8.1.
- Оптимизированное транспонирование CUDA, масштабирование OCL и производительность OCL tonemapping, последняя специально на GPU Mali.
- HLG tonemapping теперь использует EOTF из BT.2446 Method B.
- Соответствующий спецификациям вариант
dvh1HLS для Dolby Vision Profile 5 для лучшей совместимости устройств. - Исправлена потенциальная рассинхронизация A/V в HLS при трансформировании видео с ремультиплексированием аудио.
- Запись субтитров теперь проходит через SubtitleEdit, что избегает старого преобразования SSA в ASS и потери стиля, которая с ним пришла.
- Поддержка субтитров VobSub, внешние субтитры могут быть встроены в MKS при трансформировании, тайм-аут извлечения субтитров настраивается, и субтитры на основе изображений могут быть визуализированы клиентом во время ремультиплексирования.
- Опция профиля устройства для Android TV боксов, которые не могут обрабатывать видео, повёрнутое, поэтому отснятый видеоматериал телефона, снятый боком, воспроизводится правильно.
- Trickplay подбирает файлы, которые уже существуют при сканировании вместо их восстановления, больше не производит дубликаты для чересстрочного видео, работает с плохими временными метками в исходном файле и очищает себя при сбое генерации.
- Лучшая поддержка устройств в веб-клиенте: Dolby Vision в файлах MKV на webOS 25 и новее, прямое потоковое вещание AV1 на клиентах ТВ, прямое воспроизведение анаморфного видео на Tizen, и на iOS как фоновое воспроизведение с выключенным экраном, так и исправление для нормализации аудио, влияющей на высоту звука и скорость.
Изменения разработки клиентов
Следующие изменения применяются ко всем разработчикам клиентских приложений. Пожалуйста, тщательно рассмотрите и обновите ваши приложения по мере необходимости.
HTTP API
- Устаревшие механизмы авторизации теперь отключены по умолчанию. Смотрите детали в этом pull request, если вы ещё не перешли.
GetItemsтеперь асинхронный и применяетrecursiveпри запросе фильтров, ограничиваясь запросами, включающимиincludeItemTypes. Один и тот же запрос может вернуть другой набор результатов, чем на 10.11.- Ответы
ItemByNameограничены и люди дедублированы. - Недавно устаревшие, но всё ещё функциональные:
GetTrailers(используйтеGetItemsсincludeItemTypes=Trailer),GetArtistsиGetAlbumArtists(используйтеGetPersons),GetArtistByName(используйтеGetPerson),GetMusicGenre(используйтеGetGenre), конечные точки мгновенного микса музыкального жанра (используйтеGetInstantMixFromItem),GetRecordingsSeriesи маршруты запуска (используйте конечные точки конфигурации).UserDto.HasPasswordтакже устарел и больше не предоставляет полезную информацию. Контроллеры HLS скрыты из спецификации. - Swashbuckle обновлён до версии v10, что изменяет созданный документ OpenAPI. SDK нужно регенерировать.
- Удалённые маршруты:
POST /Users/\{userId\}/EasyPassword,GET /Items/\{itemId\}/CriticReviews,GET /Environment/NetworkShares,POST /System/MediaEncoder/PathиGET /LiveTv/Recordings/Groups/\{groupId\}были устаревшими без операций, возвращающими 403, 404 или пустой результат.GET /QuickConnect/Initiateработал и был псевдонимом для маршрута POST, поэтому клиентам, использующим форму GET, нужно переключиться на POST.
Как общее напоминание о нашей политике поддержки API: если конечная точка не указана в спецификации OpenAPI, её не следует использовать, и если конечная точка или параметр помечены устаревшими, их не следует использовать. Задержки обычно помечаются на весь цикл основного релиза перед удалением.
Плагины
- Сервер теперь ориентирован на .NET 10, и несколько интерфейсов плагинов изменены. Плагины нужно переориентировать и пересобрать для 12.0.
- Новые вещи, которые могут делать плагины: предоставлять результаты поиска, предоставлять данные сходства и рекомендаций, предоставлять метаданные комиксов, предоставлять неэфирные и отсутствующие данные эпизодов, использовать агрегированные кредиты для участников, сохранять главы для не-видеоэлементов, таких как аудиокниги, обрабатывать сброс пароля для имени пользователя, который сервер не признает, и очищать свои собственные извлечённые файлы при обрезке данных элемента. Плагины Live TV также могут запрашивать доступность Schedules Direct через сервер вместо его повторной реализации.
- Плагины, которые работали с альтернативными версиями или содержимым плейлиста, нуждаются во внимании, так как они больше не хранятся внутри родительского элемента. Есть новые методы библиотеки для обоих.
- Полный список новых, изменённых и удалённых интерфейсов находится в примечаниях к релизу —
ISearchEngine,IAuthenticationProvider.HasPassword, частиIItemRepositoryи несколько членовIUserManager— это заметные разрывы.
Упразднение встроенной поддержки TLS/SSL
В примечаниях к релизу 10.11.0 мы объявили, что встроенная поддержка TLS/SSL будет удалена в этом релизе. Это удаление отложено на будущую версию. Логика не изменилась — мы продолжаем рекомендовать запуск Jellyfin за обратным прокси — поэтому, если вы запускаете подключённый к интернету экземпляр, используя встроенный TLS Jellyfin, это дополнительное время для миграции, а не отсрочка.
Приятного просмотра!