Эффективный способ создания вариантов списков воспроизведения из mp4 для HLS

Я совершенно новичок в кодировании и параметрах видео и только что узнал о требованиях Apple HLS.

До сих пор мне удавалось заставить что-то работать для моего приложения iOS. Тем не менее, я считаю, что весь процесс очень медленный и ручной. Теперь, когда мне приходится повторять это еще для нескольких локалей (видео-переводы), я не могу представить, что есть лучший способ.

Управление битрейтом

Чтобы иметь контроль над битрейтом, я использую HandBrake для создания нового файла .mp4 с соответствующей настройкой видеокодера для каждого желаемого битрейта (192k, 400k, 1m и т. д.). ЗАТЕМ я перехожу к созданию плейлистов. Это само по себе занимает несколько минут — есть ли лучший способ? tsrecompressor казалось близким, но он просто транслирует на локальный порт и не сохраняет плейлисты.

Создание плейлистов из MP4

Затем я использую набор инструментов командной строки Apple (mediafilesegmenter, variantplaylistcreator, mediastreamvalidator, hlsreport) для создания списков воспроизведения, объединения в основной список воспроизведения, проверки и т. д. Я полагаю, что эту часть можно несколько автоматизировать с помощью сценария. Я видел, как другие используют FFMPEG, но я думаю, что последние 3 инструмента Apple все равно должны применяться последовательно.

Видите ли вы что-нибудь, что можно явно оптимизировать?

Не уверен, что вы имеете в виду под «оптимизированным» здесь. Но вы можете написать скрипт (у ручного тормоза есть инструмент командной строки) или просто использовать ffmpeg, чтобы сделать все (есть миллион примеров того, как это сделать в Интернете, если вы их ищете). Транскодирование видео происходит медленно, с этим ничего нельзя поделать, кроме как использовать аппаратный ускоритель (опять же, Google может подсказать, как это сделать).

szatmary 11.12.2020 16:01

Какова ваша конечная цель здесь? Просто экспериментируете со сжатием видео? Или вы пытаетесь создать сервис?

Srikanth K. 21.12.2020 07:25

@szatmary спасибо за понимание. Я не решался использовать ffmpeg, так как Apple рекомендовала использовать их набор инструментов, но если мне нужно сделать больше из них, я мог бы использовать ffmpeg. Приятно знать, что транскодирование видео происходит медленно.

nnaj20 09.01.2021 23:45

@ШрикантК. Я просто пытался настроить потоковую передачу HLS для видео, которые обслуживает мое приложение (иначе мы нарушили бы требования Apple). Пока мы поддерживаем только две локали, поэтому я просто пошел по этому пути.

nnaj20 09.01.2021 23:46
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
805
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из чтения - похоже, вы создаете разные mp4 для каждого размера, а затем потоки HLS?

С FFMPEG вы можете создавать все потоки/плейлисты HLS без предварительного создания всех mp4. Это сократит ~ 50% кодирования, которое вы делаете :)

Существуют также сервисы, которые могут создавать хост и доставлять ваши потоки HLS для вас, экономя ваше время на создание видео (я работаю на один — api.video).

Другие вопросы по теме