Обрезка видео на стороне клиента + мультиплексирование звука в iOS Safari с HEVC — какой-нибудь жизнеспособный подход?IOS

Программируем под IOS
Ответить
Anonymous
 Обрезка видео на стороне клиента + мультиплексирование звука в iOS Safari с HEVC — какой-нибудь жизнеспособный подход?

Сообщение Anonymous »

Я создаю веб-приложение, в которое пользователи загружают видео, приложение обрезает первые 60 секунд на стороне клиента, извлекает звук для обработки ИИ на стороне сервера, а затем мультиплексирует возвращенный звук обратно в обрезанное видео. Это должно работать на мобильных устройствах, включая iOS.
Проблема
iPhone по умолчанию записывает HEVC (H.265). Все клиентские подходы, которые я пробовал, не работают в iOS Safari для больших файлов HEVC:
WebCodecs:

Код: Выделить всё

VideoDecoder.isConfigSupported({ codec: "hev1..." }) → false
ffmpeg.wasm:    fetchFile() copies entire file to JS heap → OOM (tab crash)
captureStream:  video.captureStream() not supported on iOS Safari
canvas:         must decode HEVC frames → ~8MB × 5 frame buffer → OOM
File.slice() работает для обрезки на уровне байтов без декодирования, но мне все равно нужно впоследствии мультиплексировать новую звуковую дорожку, что возвращает те же ограничения памяти.
Что работает
- iOS + H.264: конвейер WebCodecs работает нормально (декодирование → перекодирование в разрешении 720p с помощью VideoEncoder → mp4box.js mux)

- Android Chrome: работают и WebCodecs, и ffmpeg.wasm.
Что я рассмотрел
1. Извлечение только аудио с помощью mp4box.js + AudioDecoder (AAC всегда поддерживается даже в iOS HEVC) — решает этап обрезки, а не этап мультиплексирования

2. Мультиплексор на стороне сервера — работает, но увеличивает задержку и пропускную способность

3. Замена звуковой дорожки на уровне контейнера mp4box.js — по-прежнему требует загрузки moov + mdat в память
Вопрос
Существует ли какой-либо веб-API iOS Safari 16.4+, который позволяет заменять звуковую дорожку в контейнере MP4/MOV без декодирования видеокадров? Или какой-либо безопасный для памяти подход к мультиплексированию нового аудио в большой файл HEVC на стороне клиента?
Или мультиплексирование на стороне сервера является единственным реалистичным вариантом?

Подробнее: https://stackoverflow.com/questions/799 ... e-approach
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»