Конвертация видеофайлов m3u8 (метод загрузки и объединения файлов m3u8)
Конвертация видеофайлов m3u8 (метод загрузки и объединения файлов m3u8)

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

1 фон

использоватьUCБраузерAppНекоторые веб-страницы можно легковидеоСкачать на локальный,если тебе повезет,Откройте каталог кеша, и вы увидите соответствующий файл mp4. но большую часть времени,Вы видите файл m3u8 и папку, состоящую из цифр и букв.,Как показано ниже.

Войдите в папку, и вы найдете кучу файлов данных. Хотя у них нет суффиксных имен, на самом деле это файлы медиафрагментов ts (Transport Stream). Каждый из них можно открыть индивидуально с помощью плеера и представляет собой сегментированные видеоролики продолжительностью в несколько секунд. Если вы хотите посмотреть полную версию, вы можете посмотреть ее только в автономном режиме в мобильном браузере.

2 Введение в HLS и M3U8

HLS (HTTP Live Streaming) — это решение для потоковой передачи мультимедиа, основанное на протоколе HTTP, разработанное Apple для мобильных устройств, таких как iPhone, iPod, iTouch и iPad. В технологии HLS веб-сервер предоставляет клиенту аудио- и видеопотоки практически в реальном времени, используя стандартный протокол HTTP. Таким образом, пока вы используете технологию HLS, вы можете напрямую обеспечивать прямую трансляцию по требованию и в обычных HTTP-приложениях. Приложения, связанные с видео, в App Store в основном используют эту технологию. Основной принцип — разрезать видеофайл или видеопоток на небольшие части (ts) и создать индексный файл (m3u8). Поддерживаемая кодировка видеопотока — H.264, а кодировка аудиопотока — AAC. Другими словами, настоящие видеофайлы находятся в папке на первом изображении. m3u8, соответствующий каждой папке, используется для указания видеоплагину, как последовательно воспроизводить находящиеся внутри ts-файлы, тем самым представляя пользователю полное видео. .

3 Операции командной строки

3.1 Программные инструменты

Вам нужно использовать командные строки ffplay и ffmpeg.

3.2 Используйте ffplay для просмотра

Откройте файл m3u8 в текстовом виде, и вы увидите, что в нем хранится абсолютный путь к каждому файлу ts.

Язык кода:javascript
копировать
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:4.000000,
/storage/896D-1F02/Android/data/com.UCMobile/files/UCDownloads/VideoData//94bad5572f90065418914b4481bf7d1ae19403dc/Y2hlbmppbmdjb25n0
#EXTINF:6.360000,
/storage/896D-1F02/Android/data/com.UCMobile/files/UCDownloads/VideoData//94bad5572f90065418914b4481bf7d1ae19403dc/Y2hlbmppbmdjb25n1
#EXTINF:4.000000,
/storage/896D-1F02/Android/data/com.UCMobile/files/UCDownloads/VideoData//94bad5572f90065418914b4481bf7d1ae19403dc/Y2hlbmppbmdjb25n2
#EXTINF:2.080000,
……

Нет сомнений в том, что после копирования видеофайлов в файловую систему Linux абсолютные пути, указывающие на машину Android, должны быть заменены абсолютными путями или относительными путями на компьютере. Как показано ниже.

Язык кода:javascript
копировать
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:4.000000,
./94bad5572f90065418914b4481bf7d1ae19403dc/Y2hlbmppbmdjb25n0
#EXTINF:6.360000,
./94bad5572f90065418914b4481bf7d1ae19403dc/Y2hlbmppbmdjb25n1
#EXTINF:4.000000,
./94bad5572f90065418914b4481bf7d1ae19403dc/Y2hlbmppbmdjb25n2
#EXTINF:2.080000,
……

На этом этапе убедитесь, что файл m3u8 и соответствующая папка 94bad5572f90065418914b4481bf7d1ae19403dc находятся в одном родительском каталоге, а затем введите

Язык кода:javascript
копировать
ffplay XXX.m3u8

Хорошо, ты действительно думаешь, что это сделано? См. отчет об ошибке ниже.

Язык кода:javascript
копировать
Filename extension of './94bad5572f90065418914b4481bf7d1ae19403dc/Y2hlbmppbmdjb25n1395' is not a common multimedia extension, blocked for security reasons.

очевидно,Из соображений безопасности,Официальный патч блокирует ts файлы без суффиксных имен.,Подробную информацию см.Анализ уязвимостей чтения произвольных файлов FFmpeg.

Самое прямое решение — добавить суффикс ts пакетно в файлы m3u8 и соответствующие папки. Первое легко объяснить, но второе требует помощи команд в каталоге файлов.

Язык кода:javascript
копировать
ls -A | xargs -i mv { 
   } { 
   }.ts

Конечно, у нас есть более простой способ — добавить параметры в команду ffplay.

Язык кода:javascript
копировать
ffplay -allowed_extensions ALL XXX.m3u8

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

3.3 Использование ffmpeg для перекодирования

Для преобразования всего видео в формат mp4 требуется всего одна простая строка команды.

Язык кода:javascript
копировать
ffmpeg -allowed_extensions ALL -i XXX.m3u8 -c copy aaa.mp4

в: За опцией -i следует входной файл, который является индексом m3u8; -c copy указывает на копирование всех потоков, что эквивалентно -acodec copy -vcodec copy; aaa.mp4 — выходной файл.

4 Работа с графическим интерфейсом

Если установлен графический интерфейс управления, такой как «Видео», вам нужно только изменить информацию о пути в m3u8 со ссылкой на предыдущий раздел, а затем вы можете напрямую добавить воспроизведение, вообще не учитывая расширение имени файла (конечно, это будут иметь определенные риски для безопасности), а кнопки управления будут относительно полными. Однако при перекодировании я действительно не нашел хорошего программного обеспечения для работы с графическим интерфейсом. Я попробовал фабрику формата Wine+, которая принудительно объединяла медиапотоки ts независимо от индексной информации m3u8. Однако я обнаружил, что количество видео, добавляемых фабрикой формата, было ограничено при объединении. Для некоторых больших фильмов уже были созданы сотни или тысячи файлов ts. добавлено. Просто превысило. Более того, Format Factory по умолчанию не копирует и не объединяет потоки ts напрямую, а кодирует все аудио- и видеопотоки от начала до конца, что потребляет много аппаратных ресурсов. Лично я считаю, что многие графические интерфейсы являются подводными камнями для перекодирования m3u8, но командная строка ffmpeg — самая простая и надежная.

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/129157.html Оригинальная ссылка: https://javaforall.cn

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose