Практические советы

Как преобразовать M3U8 в MP4: FFmpeg, VLC и ошибки

Сохраните файл или URL M3U8 в MP4: копирование потоков, H.264/AAC, VLC, проверка доступа и отсутствующего звука.

Обновлено

M3U8 — плейлист, а MP4 — контейнер для видео и аудио.

Редактор не открывает M3U8 даже после переименования в MP4? Сначала проверьте доступность сегментов. Здесь рассматривается завершённый HLS-источник, которым вы владеете или который вправе сохранять.

Отличайте плейлист от медиасегментов

M3U8 обычно представляет текстовый список сегментов HLS, а не само видео. Он может ссылаться на другие качества или отдельный звук. Переименование в .mp4 не создаёт медиаданные.

Плейлист и его ресурсы должны быть доступны. Локально нужны также .ts, .m4s и файлы инициализации. Сохраняйте структуру для относительных путей. Здесь используется завершённый источник, не запись текущего эфира.

Сначала попробуйте копирование потоков FFmpeg

Сначала выполните ffmpeg -version в новом терминале. Если команда не найдена, проверьте установку и путь к программе. Пример выбирает первое видео и первое аудио, не обязательно лучшее качество или нужный язык. Видео без аудио даст беззвучный MP4. Для плейлиста только с аудио нужна другая команда; субтитры и остальные дорожки не включены.

-c copy меняет контейнер без перекодирования, избегая ещё одного поколения кодирования. Он не восстанавливает сегменты и не меняет несовместимые с MP4 кодеки. Используйте разрешённый путь или URL, оставляя пробелы и параметры в кавычках. +faststart переносит метаданные MP4 в начало для удобного старта воспроизведения. Скорость загрузки по сети он не увеличивает.

  1. Откройте терминал в папке для результата. Для локального плейлиста подготовьте копию с сегментами, сохранив исходную структуру папок.
  2. Подставьте реальный путь или URL плейлиста и новое имя результата.
  3. Выполните копирование, проверьте ошибки и воспроизведение.
Сохранение MP4 без перекодирования
ffmpeg -i "input.m3u8" -map 0:v:0 -map "0:a:0?" -c copy -movflags +faststart "output.mp4"

Перекодируйте для совместимости или используйте VLC

Если устройство не воспроизводит копию, попробуйте H.264 и AAC. Команде нужны libx264 и AAC в FFmpeg. Перекодирование требует времени и может менять качество и размер; сохраните оригинал. Это пример для обычного SDR; тональное отображение HDR в SDR требует отдельных настроек.

Перекодирование для совместимости: H.264 и AAC
ffmpeg -i "input.m3u8" -map 0:v:0 -map "0:a:0?" -c:v libx264 -crf 20 -preset medium -pix_fmt yuv420p -c:a aac -b:a 128k -movflags +faststart "output-compatible.mp4"

В Windows VLC обычно использует Media → Convert/Save, вход Network, профиль и назначение. Профиль может называться H.264 + MP3 (MP4); AAC и подписи зависят от версии. В macOS меню отличается.

  1. Найдите Media → Convert/Save и вкладку Network.
  2. Введите M3U8 URL и выберите Convert.
  3. Проверьте профиль MP4 и новый файл назначения .mp4.
  4. Нажмите Start и откройте результат; при отличиях смотрите справку своей версии.

Разбирайте 403, 404 и отсутствие звука отдельно

При 403 проверьте права и срок адреса, при 404 — изменённый или удалённый ресурс. Если не читается сегмент, проверьте путь и инициализацию. Перемещение папок тоже ломает ссылки. Перекодирование не заменит отсутствующие данные.

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

Проверьте мобильные варианты и готовый файл

На телефоне сначала ищите официальное скачивание или офлайн-функцию. Узнайте, нужны ли онлайн-конвертеру сегменты и отправляет ли он файлы или URL на сервер. Прочитайте условия обработки до передачи частного видео или ссылок с авторизацией.

Проиграйте начало, середину и конец со звуком, сравните длительность. Живой плейлист без метки конца может не завершиться сам и не вернёт удалённые старые сегменты. Предпочтителен законченный VOD. Демонстрация использует наш короткий завершённый HLS-пример.

Проверка результата: потоки и длительность Замените output.mp4 именем действительно сохранённого файла. Пример перекодирования создаёт output-compatible.mp4.
ffprobe -v error -show_entries format=duration:stream=codec_type,codec_name,width,height -of json "output.mp4"
Этот MP4 сохранён из нашего короткого HLS-примера. Проверьте длительность и звук при воспроизведении.

Сравните длительность и воспроизведите начало, середину и конец со звуком. Передавайте проверенный MP4, сохраняя исходный плейлист и сегменты до конца проверки.

Инструменты

Источники

На основе общедоступной документации, а не полного функционального аудита или аудита безопасности.

Все руководства →