Как сделать автоматический транскодер видео в WordPress

Видеоконтент занимает всё больше места в современных сайтах, особенно на платформах типа WordPress. Но одна из частых проблем — это необходимость оптимизировать и конвертировать видео в разные форматы и разрешения, чтобы обеспечить широкую поддержку устройств и быструю загрузку. В этой статье мы подробно разберём, как сделать автоматический транскодер видео в WordPress, который будет конвертировать загружаемые видеофайлы в нужные форматы и создавать оптимизированные версии.

Почему важен автоматический транскодер видео в WordPress

При загрузке видео в WordPress обычно используются оригинальные файлы, которые могут быть слишком «тяжёлыми» и не подходить для всех браузеров. Автоматический транскодер позволяет:

  • Конвертировать видео в несколько форматов (MP4, WebM, Ogg) для совместимости с разными браузерами.
  • Создавать версии с разным разрешением (360p, 720p, 1080p) для адаптивной загрузки и экономии трафика.
  • Оптимизировать видео по размеру без потери качества.
  • Автоматизировать процесс, экономя время и ресурсы владельца сайта.

Реализация этого функционала требует интеграции с внешними инструментами или библиотеками для транскодирования, такими как FFmpeg.

Использование плагина WPVideo Transcoder для автоматического конвертирования

Для упрощения задачи можно использовать готовый плагин WPVideo Transcoder, который интегрируется с FFmpeg и позволяет автоматически обрабатывать видео при загрузке.

Преимущества плагина:

  • Автоматическое создание нескольких форматов и разрешений.
  • Настраиваемые профили транскодирования.
  • Поддержка отложенной очереди обработки, чтобы не нагружать сервер.
  • Интеграция с медиабиблиотекой WordPress.

Для установки плагина просто загрузите его через админку WordPress или скачайте с официального сайта WPShop.

Базовая настройка плагина WPVideo Transcoder

После активации плагина перейдите в Настройки → WPVideo Transcoder. Здесь вы сможете задать профили транскодирования, например:

  • MP4 720p, H.264, битрейт 2500kbps
  • WebM 480p, VP8, битрейт 1500kbps
  • MP4 360p, H.264, битрейт 1000kbps

Также можно настроить путь к бинарнику FFmpeg, если он установлен не в стандартном месте.

Реализация автоматического транскодера видео на PHP с FFmpeg

Если вы хотите самостоятельно реализовать транскодер без готовых плагинов, то вам понадобится сервер с установленным FFmpeg и немного PHP-кода для интеграции с WordPress.

Шаг 1. Подключение к хуку загрузки медиафайла

WordPress предоставляет хук add_attachment, который срабатывает после загрузки файла в медиабиблиотеку.

add_action('add_attachment', 'wpvideo_process_uploaded_video');

function wpvideo_process_uploaded_video($attachment_id) {
    $mime = get_post_mime_type($attachment_id);
    if (strpos($mime, 'video') === 0) {
        $file_path = get_attached_file($attachment_id);
        wpvideo_transcode_video($file_path, $attachment_id);
    }
}

Шаг 2. Функция транскодирования видео

В этой функции вызывается FFmpeg для создания альтернативных версий видео.

function wpvideo_transcode_video($input_path, $attachment_id) {
    $upload_dir = wp_upload_dir();
    $output_dir = $upload_dir['basedir'] . '/transcoded-videos/' . $attachment_id . '/';
    if (!file_exists($output_dir)) {
        wp_mkdir_p($output_dir);
    }

    // Профили конвертации
    $profiles = [
        ['suffix' => '720p.mp4', 'resolution' => '1280x720', 'codec' => 'libx264', 'bitrate' => '2500k'],
        ['suffix' => '480p.webm', 'resolution' => '854x480', 'codec' => 'libvpx', 'bitrate' => '1500k'],
        ['suffix' => '360p.mp4', 'resolution' => '640x360', 'codec' => 'libx264', 'bitrate' => '1000k'],
    ];

    foreach ($profiles as $profile) {
        $output_file = $output_dir . wp_basename($input_path, '.' . pathinfo($input_path, PATHINFO_EXTENSION)) . '-' . $profile['suffix'];
        $cmd = "ffmpeg -i " . escapeshellarg($input_path) . " -vf scale=" . $profile['resolution'] . " -c:v " . $profile['codec'] . " -b:v " . $profile['bitrate'] . " -c:a aac -strict -2 " . escapeshellarg($output_file) . " -y";

        exec($cmd, $output, $return_var);
        if ($return_var !== 0) {
            error_log("WPVideo: Ошибка при транскодировании видео: " . implode("\n", $output));
        } else {
            // Можно сохранить информацию о новых файлах в мета
            add_post_meta($attachment_id, '_wpvideo_transcoded_file', $output_file);
        }
    }
}

Шаг 3. Использование транскодированных версий на сайте

Для вывода видео с поддержкой нескольких форматов можно использовать HTML5-тег <video> с несколькими <source>:

function wpvideo_render_video_player($attachment_id) {
    $transcoded_files = get_post_meta($attachment_id, '_wpvideo_transcoded_file');
    if (empty($transcoded_files)) {
        // Выводим оригинальный файл
        $video_url = wp_get_attachment_url($attachment_id);
        echo '<video controls><source src="' . esc_url($video_url) . '" type="video/mp4">Ваш браузер не поддерживает видео.</video>';
        return;
    }

    echo '<video controls>';
    foreach ($transcoded_files as $file) {
        $url = str_replace(wp_upload_dir()['basedir'], wp_upload_dir()['baseurl'], $file);
        $type = '';
        if (strpos($file, '.mp4') !== false) $type = 'video/mp4';
        elseif (strpos($file, '.webm') !== false) $type = 'video/webm';
        echo '<source src="' . esc_url($url) . '" type="' . $type . '">';
    }
    echo 'Ваш браузер не поддерживает видео.'</video>';
}

Как протестировать и отладить транскодер видео

Для проверки корректности работы транскодера загружайте видео в WordPress и смотрите логи сервера на предмет ошибок FFmpeg. Также проверяйте созданные файлы в папке /wp-content/uploads/transcoded-videos/. Если видео не конвертируется, убедитесь, что ваш хостинг поддерживает запуск команд exec() и установлен FFmpeg.

Для локальной отладки рекомендуем использовать XAMPP или Docker с установленным FFmpeg, а затем переносить код на продакшен.

Альтернативные решения и советы

Если ваш хостинг не позволяет запускать FFmpeg, можно использовать облачные сервисы транскодирования, например, AWS Elastic Transcoder или Vimeo API, интегрируя их через REST-запросы из WordPress.

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

Заключение

Автоматический транскодер видео в WordPress — это мощный инструмент для улучшения производительности сайта и качества пользовательского опыта. Используя готовые плагины или собственные решения с FFmpeg, вы сможете обеспечить адаптивную, быструю и кроссбраузерную поддержку видео на вашем сайте, что особенно актуально для проектов с большим объёмом видеоконтента.

Как добавить автозапуск видео на мобильных устройствах в WordPress
05.02.2026
Как создать плагин для автоматической оптимизации видео в WordPress
01.12.2025
Как создать видео всплывающие окна (pop-up) в WordPress
26.02.2026
Как сделать автоматические миниатюры видео в WordPress
10.01.2026
Как автоматически устанавливать миниатюры видео в WordPress
30.12.2025