Safari createMediaElementSource не работает на видеоисточниках HLS / m3u8? - PullRequest
1 голос
/ 27 марта 2020

В настоящее время я пытаюсь интегрировать пользовательский аудиофильтр в видеопроигрыватель, обрабатывающий как файлы HLS, так и необработанные файлы MP4. У меня практически нет проблем с интеграцией на Chrome и Firefox - Safari, с другой стороны, не ведет себя соответствующим образом. Я наткнулся на несоответствие способа, с помощью которого safari маршрутизирует аудио из createMediaElementSource звонка.

Я создал небольшую демонстрацию, чтобы проиллюстрировать проблему (Safari ТОЛЬКО для нативных HLS поддержка), я явно пропустил любой код звукового фильтра, так как он не имеет отношения к основной проблеме:

https://codepen.io/edvincandonus/pen/ZEGVbPG

В демоверсии, однажды audioContext создается и "разблокируется" жестом пользователя, я создаю MediaElementAudioSourceNode с помощью audioCtx.createMediaElementSource(video) и оставляю его висящим (как в неподключенном). Как следствие, HTMLMediaElement будет перенаправлен в график обработки AudioContext, и, поскольку к audioCtx.destination не было подключено ни одного соединения, при запуске воспроизведения видео должно отсутствовать воспроизведение.

Это поведение на Firefox. Chrome идет еще дальше и блокирует воспроизведение видео, если MediaElementAudioSourceNode не имеет конечного узла назначения (попробуйте воспроизвести MP4 из демоверсии на chrome)

Что касается Safari: это ожидание выполняется только тогда, когда источником видео является необработанный файл MP4 - но при переключении на поток m3u8 / hls звук HTMLMediaElement не правильно направляется в AudioContext, поскольку вы можете четко слышать звук видео.

Это известное ограничение сафари? Если нет, есть ли у кого-нибудь обходные пути для правильного доступа и маршрутизации аудио из потока HLS с использованием встроенной поддержки Safari для этого протокола?

Я наткнулся на старые ответы stackoverflow, указывающие, что createMediaElementSource имел всегда были ошибки в Safari, но я думаю, они уже исправили бы это.

...