Видео
Видео — это изображение, файл которого оканчивается на .mp4, .m4v или .webm:


Синтаксис
Файл читается из папки презентации или по URL http либо https. Абсолютный путь, путь, выходящий за пределы папки, или любая другая схема отклоняются. #t=12.5, или #t=1:23 в минутах и секундах, выбирает кадр-постер: изображение, которое показывается перед воспроизведением и выходами, не умеющими воспроизводить видео. Форма медиафрагмента #t=10,20 тоже принимается, и используется её начало. Без этого постером служит первый кадр.
Ключевые слова в альтернативном тексте, записываемые как ключевые слова изображений Marp, но собственные для go-slides, задают воспроизведение: autoplay, loop и muted. autoplay учитывается только вместе с muted; иначе он игнорируется с предупреждением. Остальные слова альтернативного текста — доступная подпись.
Что показывает каждый выход
- HTML (страница и предпросмотр в playground): элемент
<video controls playsinline preload="metadata" poster=...>. Постер — это декодированный кадр, встроенный как JPEG data URI. Видео никогда не включает звук само. Когда браузер просит меньше движения (prefers-reduced-motion),autoplayиloopубираются, а видео ставится на паузу. Видео, запускающееся само (без звука), играет, только пока видна хотя бы половина, и ставится на паузу, когда его слайд не показан. - PDF (
--pdf): кадр-постер как изображение со ссылкой на видеофайл: относительный путь так, как он записан в презентации, или URL для источникаhttpлибоhttps. Воспроизведение происходит только при открытии ссылки. В PDF нет аннотацииRichMedia: она играла бы только в Acrobat, и её намеренно не используют. - PowerPoint (
--pptx): видео встраивается как медиачасть (ppt/media/slidesvideoN.mp4|webm) вместе с постером, какa:videoFileплюс расширениеp14:media. Keynote: импортирует его как фильм и воспроизводит (проверено). LibreOffice Impress: импортирует файлы PowerPoint и OpenDocument как видео и декодирует его (проверено). PowerPoint: ещё не проверено. Ключевые словаautoplay,loopиmutedне переносятся в PowerPoint и OpenDocument. - OpenDocument (
--odp): видео встраивается вVideo/какdraw:plugin(ODF 1.3, часть 3, 10.4.8), передdraw:imageпостера, и перечисляется в манифесте. LibreOffice Impress импортирует его как видео и декодирует (проверено); воспроизведение в показе слайдов зависит от его медиабэкенда и кодека. - Источники URL: HTML-страница передаёт видео потоком по URL. Экспорты показывают нейтральную карточку со ссылкой на URL. При сборке ничего не загружается, и ничего не встраивается в PowerPoint или OpenDocument.
Контейнеры и постеры
Файлы MP4 (ISO BMFF) и WebM (Matroska) читаются на Go; ffmpeg никогда не запускается. Постер декодируется только для H.264 (avc1 или avc3), единственного видеодекодера go-avkit. Другие кодеки (H.265, VP8, VP9, AV1) по-прежнему играют в HTML и встраиваются в PowerPoint и OpenDocument, но их постер — нейтральная тёмная карточка с треугольником воспроизведения, и выводится предупреждение video.codec.
Ограничения
Видео — недоверенный ввод, поэтому оно ограничено: файл (64 MiB), боксы или элементы (262 144) и их вложенность (16 уровней), кадр (4096 на 4096) и декодирование постера (не более 600 сэмплов от предыдущего ключевого кадра, 8 MiB на сэмпл). Постер, слишком далёкий от ключевого кадра, получает карточку и предупреждение video.limit.
Отклонённое видео заменяется на слайде заметкой [video not shown: ...]; сборка продолжается, а проблема — это предупреждение с кодом:
video.syntax: это не файл MP4 или WebM, нет видеодорожки или недопустимое время;video.limit: превышено одно из ограничений выше;video.codec: постер нельзя декодировать для этого кодека;video.path: абсолютный путь, путь за пределами папки презентации или схема, отличная отhttpиhttps;file.missing: файл не существует.
В playground
После выпуска видео можно будет добавить в проект, как и другие файлы. Его байты остаются в браузере, как blob-URL, и никогда не загружаются. Попробуйте в playground.
Created on by tannevaled
Modified on by tannevaled