Для работы с видео и медиа в Markdown через Markdown-it
необходимо сначала установить и подключить библиотеку:
const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();
Markdown-it по умолчанию не поддерживает прямую вставку
видео или аудио-тегов HTML, но допускает расширение функционала с
помощью плагинов или встроенного синтаксиса HTML.
Markdown позволяет вставлять чистый HTML, что делает возможным
использование тегов <video> и
<audio> напрямую:
<video width="640" height="360" controls>
<source src="video.mp4" type="video/mp4">
Ваш браузер не поддерживает видео.
</video>
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
Ваш браузер не поддерживает аудио.
</audio>
При рендеринге через Markdown-it эти элементы корректно
преобразуются в HTML, и их можно использовать в браузере без
дополнительных модификаций.
Особенности:
controls добавляет стандартные элементы
управления воспроизведением.autoplay, loop,
muted для кастомизации поведения.type
(video/mp4, audio/mpeg).Если включен режим безопасного рендеринга (html: false),
HTML-теги будут экранироваться. Для вставки медиа необходимо разрешить
HTML:
const md = new MarkdownIt({
html: true
});
Это позволит использовать все стандартные HTML-теги для медиа внутри Markdown.
Для более удобной работы с видео и аудио можно использовать плагины,
которые добавляют специальные синтаксисы. Пример:
markdown-it-video.
Установка:
npm install markdown-it-video
Подключение и использование:
const markdownItVideo = require('markdown-it-video');
md.use(markdownItVideo, {
youtube: { width: 640, height: 390 },
vimeo: { width: 640, height: 390 }
});
const result = md.render(`
@[youtube](dQw4w9WgXcQ)
@
`);
@[youtube](ID) позволяет вставлять
YouTube-видео по идентификатору.<iframe> с указанными размерами.Можно создавать свои правила и рендереры для добавления кастомных атрибутов, например:
md.renderer.rules.video = function(tokens, idx) {
const token = tokens[idx];
return `<video src="${token.content}" width="800" controls autoplay></video>`;
};
Такой подход позволяет создавать собственный синтаксис в Markdown, например:
:::video
video.mp4
:::
И через кастомный рендерер преобразовывать его в полноценный тег
<video> с нужными атрибутами.
Для сторонних сервисов (YouTube, Vimeo, Dailymotion) оптимально
использовать <iframe>:
<iframe width="640" height="360" src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>
allowfullscreen включает режим полноэкранного
воспроизведения.allow="autoplay; encrypted-media" для
поддержки расширенных функций.markdown-it-video автоматизирует этот процесс и
позволяет не писать iframe вручную.Для улучшения UX часто используют превью-картинки:
[](video.mp4)
<a href="video.mp4">
<img src="preview.jpg" alt="Видео-превью" width="640">
</a>
Это решение совместимо с любыми Markdown-it плагинами, не требуя дополнительной настройки.
<video> с
<source> и атрибутами.<audio> с
<source> и атрибутами.<iframe> или
плагины типа markdown-it-video.<a> с
изображением для кликабельных видео.Такой подход позволяет интегрировать видео и аудио в Markdown-it гибко и безопасно, сохраняя контроль над HTML и поведение медиа в браузере.