Автоматически воспроизводить и зацикливать видео при загрузке

Привет :waving_hand:

Я думаю о двух способах, как это можно реализовать.

Первый способ — самый простой: создать небольшой компонент темы, который с помощью плагина API api.decorateCookedElement находит все видео в постах и добавляет им необходимые атрибуты (autoplay, loop и т.д.).

Это изменит HTML всех видео в постах на всём сайте. В редакторе (композиции) по-прежнему будет отображаться ваш упомянутый выше маркдаун-код видео:
![happy-birthday|video](upload://abcdefg123456789.mp4)

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


Второй вариант требует чуть больше работы. Это модальное окно, где пользователи могут выбирать, какие атрибуты добавить к загружаемому видео. Его можно активировать, добавив специальную кнопку в редактор, или настроить автоматическое появление при обнаружении загрузки видео.

После настройки в редактор вставляется HTML-код видео с добавленными атрибутами:

<video width="100%" height="100%" preload="metadata" controls="" autoplay>
    <source src="https://www.simscale.com/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4">
    <a href="https://www.simscale.com/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4">/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4</a>
</video>

Отличный пример такого подхода — компонент темы Insert Video.

Плюсы: пользователи могут управлять атрибутами своих видео, отключать автозапуск и т.д., поэтому темы с большим количеством видео будут работать корректно.
Минусы: это не затронет старые видео. Но это не критично, так как весь второй подход ориентирован именно на контроль пользователей над своими видео.


Кроме того

Первый метод можно комбинировать с настройкой пользователя или группой. Тогда пользователи смогут настраивать поведение видео. Например: «Включить автозапуск видео» или вступить в группу, которая активирует автозапуск и т.д.


Редактирование: только что подумал, что забыл про ленивую загрузку (lazy load). Вероятно, первый способ сейчас не сработает, потому что ленивая загрузка загружает видео только после нажатия пользователем на кнопку воспроизведения миниатюры. Я ещё не пробовал это в действии… :thinking: