Перейти к содержимому

Медиабиблиотека и видео - коллекции, права, плеер

Медиабиблиотека нужна там, где контент-менеджер многократно вставляет одни и те же картинки, документы и ролики. Она входит в модуль «Управление структурой», хранит файлы коллекциями и подставляется в формы выбора файла.

Решение

Включаем медиабиблиотеку

Включаем библиотеку в настройках модуля:

Настройки → Настройки продукта → Настройки модулей → «Управление структурой»
Вкладка: Медиабиблиотека
Опция: Использовать медиабиблиотеку = Y
Опция: Использовать медиабиблиотеку по умолчанию = Y

Первая опция открывает сам раздел, вторая подставляет библиотеку во все системные формы выбора файла. Без второй опции менеджер видит библиотеку в административном разделе, а в карточке элемента она не предлагается.

Настраиваем типы коллекций

На той же вкладке задаём лимиты хранения:

Размеры превью - высота и ширина картинки предпросмотра
Расширения на тип - изображения: jpg, gif, png; видео: flv, mp4, wmv
Максимальный размер - предел для загружаемых изображений
Тип «Изображения» - системный, удалить его нельзя

Список расширений задаётся отдельно для каждого типа коллекций, а не общий на всю библиотеку. Под документы и другие форматы заводят свой тип коллекций со своим списком расширений: системный тип изображений трогать не нужно.

Заводим коллекции и раздаём права

Создаём коллекции и открываем к ним доступ:

Контент → Структура сайта → Медиабиблиотека
Тип коллекции: Изображения | Видео | Аудио | свой
Коллекция: верхний уровень или вложенная, иерархия любой глубины
Кнопка «Доступ»: уровень вида «Просмотр коллекций» на группу пользователей

Права ставятся на коллекцию, а не на отдельный файл. Они ограничивают выбор файла в административном разделе, но не закрывают прямую ссылку: файл лежит в открытом каталоге загрузок и отдаётся веб-сервером напрямую.

Вставляем файл в контент

Выбираем файл из визуального редактора:

Визуальный редактор → кнопка «Изображение» → «Выбрать из медиабиблиотеки»
в том же окне доступна загрузка нового файла
Элемент инфоблока → вкладка «Подробно» → поле «Детальная картинка»
→ выбор из медиабиблиотеки, адрес подставляется сам

В поле картинки записывается адрес файла коллекции, а не отдельная копия. Поэтому привычная правка загруженной картинки в карточке элемента недоступна: кадрируют и заменяют сам элемент коллекции, а страницы подхватывают результат.

Выводим видео плеером

Подключаем штатный медиапроигрыватель:

$APPLICATION->IncludeComponent('bitrix:player', '', [
'PATH' => '/upload/medialibrary/f0c/promo.mp4', // «Путь к файлу» из коллекции
'PLAYER_TYPE' => 'auto', // тип проигрывателя платформа подбирает сама
'WIDTH' => '400',
'HEIGHT' => '300',
'AUTOSTART' => 'N',
'USE_PLAYLIST' => 'N',
]);

Мастер визуального редактора вставляет в страницу этот же вызов, только с полным набором параметров оформления. Один плеер играет один файл: выбрать в поле пути несколько файлов сразу платформа не даёт.

Сравниваем с загрузкой в свойство

Сверяем два способа хранения файла:

Свойство элемента: файл уходит в хранилище платформы своей копией,
удаляется вместе со значением свойства
Медиабиблиотека: файл живёт в коллекции и переиспользуется на любой
странице, в контент попадает адресом, а не копией
Замена файла: «Изменить» у элемента коллекции сохраняет новый файл,
ранее записанные в контент адреса на него не переедут

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

Типичные проблемы

Медиабиблиотеки нет в форме выбора файла.

Опция «Использовать медиабиблиотеку» выключена в настройках модуля «Управление структурой». Подстановку во все системные формы включает вторая опция - «Использовать медиабиблиотеку по умолчанию».

Видео не сохраняется: «элемент не был сохранен».

Расширение файла не входит в список разрешённых для этого типа коллекций. Список правят на вкладке «Медиабиблиотека» отдельно для видео, аудио и изображений.

Контент-менеджер вставил ролик, после сохранения код пропал.

Проактивный фильтр разбирает вставленный код как попытку XSS и вырезает его. У администратора фильтр не срабатывает, поэтому пропажа видна только под менеджером.

Файл в коллекции заменили, а на страницах прежний.

Замена сохраняет новый файл по новому пути, а старый остаётся на месте. Адреса, записанные в контент раньше, ведут на прежний файл и правятся руками.

В библиотеке всё есть, а воспроизвести ролик нечем.

Медиабиблиотека только хранит файл и отдаёт его адрес. Проигрывание делает отдельный компонент bitrix:player, который ставят на страницу.

Частые вопросы

Какие форматы можно загружать в медиабиблиотеку?

Те, что перечислены в настройках модуля «Управление структурой» на вкладке «Медиабиблиотека». Список расширений там свой у каждого типа коллекций, поэтому mp4 для видео добавляется отдельно от списка картинок.

Как заменить файл в коллекции, чтобы не менять ссылки?

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

Как вывести видео в шаблоне списка новостей?

Подключаем bitrix:player прямо в шаблоне компонента для каждого элемента и отдаём в параметр пути значение свойства. Альтернатива - своя разметка тега video, если штатный плеер не нужен.

Можно ли вмешаться в HTML элемента медиабиблиотеки?

Да, для этого есть событие OnMedialibItemView модуля fileman. Его инициирует метод CMedialib::GetItemViewHTML перед выдачей HTML, поддержка идёт с версии 9.0.0.

Есть ли у медиабиблиотеки современное API?

Нет. Классы CMedialib, CMedialibCollection и CMedialibItem относятся к старому ядру и живут в модуле fileman. Сигнатуры сверяют по справочнику API, в учебных курсах их нет.

Смежное

Первоисточник