Владельцы сайтов на WordPress часто сталкиваются с проблемой, что встроенные видео могут не воспроизводиться корректно в разных браузерах и устройствах из-за несовместимости форматов. Например, формат MP4 поддерживается почти везде, а вот WebM или Ogg могут быть более эффективными с точки зрения качества и размера, но не везде воспроизводятся. В этой статье мы подробно разберём, как настроить автоматическую замену или добавление альтернативных форматов видео в WordPress для обеспечения максимальной совместимости и улучшения пользовательского опыта.
Почему важно использовать несколько видео форматов в WordPress
Поддержка нескольких форматов видео на сайте позволяет задействовать преимущества каждого из них. Например, WebM часто обеспечивает меньший размер и лучшее качество на современных браузерах, а MP4 гарантирует воспроизведение на старых устройствах и Safari. При автоматической подстановке альтернативных видео форматов мы обеспечиваем:
- Максимальную совместимость с разными браузерами и устройствами.
- Оптимизацию скорости загрузки за счёт использования более лёгких форматов там, где это возможно.
- Повышение удобства пользователей и снижение отказов от просмотра видео.
Реализовать это вручную неудобно, особенно если видео много и обновляются они часто. Поэтому стоит автоматизировать процесс.
Автоматическая конвертация и замена видео форматов с помощью плагинов WordPress
Существуют плагины, которые позволяют автоматически конвертировать загружаемые видео в нужные форматы и подставлять их в теги видео на страницах. Рассмотрим два популярных решения:
1. Video.js HTML5 Player
Этот плагин не занимается конвертацией, но позволяет использовать несколько источников видео с разными форматами для одного плеера. Для конвертации видео можно использовать сторонние инструменты или сервисы, а затем вручную или через скрипты добавлять альтернативные видео.
2. FV Flowplayer Video Player
Плагин поддерживает воспроизведение нескольких форматов и позволяет настроить автоматическую подстановку источников. Для автоматической конвертации видео можно интегрировать его с внешними конвертерами, например, FFMPEG на сервере.
Однако, для полной автоматизации рекомендую использовать собственный код для подстановки альтернативных источников с уже конвертированными файлами.
Реализация автозамены видео форматов в WordPress на PHP с использованием FFMPEG
FFMPEG — это мощный инструмент командной строки для конвертации видео. Мы можем настроить обработку загруженных видео в WordPress через хук add_attachment или wp_handle_upload, чтобы автоматически создавать альтернативные форматы WebM и Ogg.
Пример функции для конвертации видео после загрузки
function omni_video_ffmpeg_convert_formats($attachment_id) {
$file_path = get_attached_file($attachment_id);
$file_info = pathinfo($file_path);
$upload_dir = $file_info['dirname'];
$file_name = $file_info['filename'];
// Проверяем, что это видео формат mp4
$mime_type = get_post_mime_type($attachment_id);
if (strpos($mime_type, 'video') === false) {
return; // не видео, выходим
}
// Пути для новых форматов
$webm_path = $upload_dir . '/' . $file_name . '.webm';
$ogv_path = $upload_dir . '/' . $file_name . '.ogv';
// Команды ffmpeg для конвертации
$cmd_webm = "ffmpeg -i " . escapeshellarg($file_path) . " -c:v libvpx -b:v 1M -c:a libvorbis " . escapeshellarg($webm_path);
$cmd_ogv = "ffmpeg -i " . escapeshellarg($file_path) . " -c:v libtheora -q:v 7 -c:a libvorbis " . escapeshellarg($ogv_path);
// Выполнение конвертации
shell_exec($cmd_webm);
shell_exec($cmd_ogv);
// Здесь можно сохранить пути в метаданных, чтобы потом использовать в выводе
update_post_meta($attachment_id, 'omni_video_webm', str_replace(wp_get_upload_dir()['basedir'], wp_get_upload_dir()['baseurl'], $webm_path));
update_post_meta($attachment_id, 'omni_video_ogv', str_replace(wp_get_upload_dir()['basedir'], wp_get_upload_dir()['baseurl'], $ogv_path));
}
add_action('add_attachment', 'omni_video_ffmpeg_convert_formats');
Данная функция запускается при добавлении нового вложения (видео) и создаёт два альтернативных формата. Для работы этого кода необходимо, чтобы на сервере был установлен ffmpeg и были права на выполнение shell-команд.
Вывод видео с несколькими источниками форматов в шаблоне WordPress
Чтобы использовать созданные альтернативные форматы, нужно изменить вывод видео в шаблонах. Рассмотрим пример функции, которая формирует тег <video> с несколькими источниками:
function omni_video_get_video_html($attachment_id, $attributes = []) {
$mp4_url = wp_get_attachment_url($attachment_id);
$webm_url = get_post_meta($attachment_id, 'omni_video_webm', true);
$ogv_url = get_post_meta($attachment_id, 'omni_video_ogv', true);
$attr_string = '';
foreach ($attributes as $key => $value) {
$attr_string .= esc_attr($key) . '="' . esc_attr($value) . '" ';
}
$html = '<video ' . $attr_string . 'controls preload="metadata">';
if ($webm_url) {
$html .= '<source src="' . esc_url($webm_url) . '" type="video/webm">';
}
if ($ogv_url) {
$html .= '<source src="' . esc_url($ogv_url) . '" type="video/ogg">';
}
$html .= '<source src="' . esc_url($mp4_url) . '" type="video/mp4">';
$html .= 'Ваш браузер не поддерживает видео.';
$html .= '</video>';
return $html;
}
Используя эту функцию в шаблонах, вы гарантируете, что пользователи увидят видео в оптимальном формате, поддерживаемом их браузером.
Практические советы и рекомендации по использованию автозамены форматов видео
Чтобы настройка автозамены видео форматов работала эффективно, учтите следующие моменты:
- Проверяйте работу ffmpeg на вашем сервере. Убедитесь, что у вас есть доступ к shell и права на выполнение команд.
- Оптимизируйте параметры конвертации. Настройте битрейт и кодеки для баланса качества и размера видео.
- Храните URL альтернативных форматов в метаданных. Это упростит вывод видео в шаблонах без повторного сканирования файлов.
- Подумайте о кэшировании. Конвертация видео может занимать время, поэтому желательно выполнять её один раз и не делать при каждом запросе.
- Используйте плееры, поддерживающие несколько источников. Например, Video.js или Flowplayer.
Если сервер не позволяет запускать ffmpeg, можно использовать сторонние сервисы конвертации с API, однако это уже отдельная тема.
Заключение по настройке автозамены видео форматов
Автоматическая замена и добавление альтернативных видео форматов в WordPress — эффективный способ повысить совместимость и качество воспроизведения видео на вашем сайте omni-video.ru. Использование ffmpeg и правильный вывод видео с несколькими источниками позволяет создать удобный и универсальный видеоконтент без лишних хлопот.