Есть ли способ воспроизвести несколько аудио файлов, синхронизированных в html5? - PullRequest
4 голосов
/ 04 июня 2019

Мы записываемся в конференц-залах, где у нас несколько разговоров. К каждому громкоговорителю подключен персональный микрофон, и речь с каждого микрофона записывается как отдельный канал (отдельный аудиофайл).

Наша цель - позволить пользователю воспроизводить все аудио (каналы) одновременно. У нас может быть до 12 отдельных файлов. Кроме того, нам нужен пользователь, чтобы иметь возможность контролировать громкость каждого потока (поэтому простое объединение файлов на сервере не является решением).

Что мы могли бы использовать для достижения этого? Наивное решение, позволяющее воспроизводить их все одновременно, вероятно, не сработает, поэтому мы хотим знать, были ли такие вызовы решены с помощью современных html5 API.

--- ОБНОВЛЕНИЕ, чтобы ответить @ Комментарий Амдадана ---

Почему бы и нет? Вы попробовали это? Вы беспокоитесь о пропускной способности соединения, если вы их транслируете? Вас беспокоит ограничение API?

Да, мы пытались. 1) Когда мы вызываем «play» для всех файлов - он не запускается все одновременно (он начинает загружать их все, один загружается быстрее, один загружается медленнее и т. Д.). 2) Когда он уже воспроизводится и файл достигает конца «буферизованного» времени, он также останавливается, пока другие продолжают воспроизведение.

Мы пытались использовать события для обработки этих случаев, но нам это не удалось - есть много вариантов для обработки.

Вас беспокоит размер, если вы загружаете их все перед игрой?

Да, мы есть. Файлы могут быть длиной в пару часов - они не могут быть все в буфере.

Вас беспокоит пропускная способность соединения при потоковой передаче? их? Вас беспокоит ограничение API?

Нет, мы используем CloudFront, подключенный к s3 - пропускная способность в порядке и особых ограничений нет


Заранее спасибо, - Джек

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Возможно использование библиотеки MediaSync - вариант для вас. Это позволяет синхронизировать два элемента <video/>, как показано на их странице. Но это должно работать и со звуком.

0 голосов
/ 04 июня 2019

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

WebM, похоже, использует Matroska, который поддерживает многодорожечный режим. Подробности в ссылке ниже.

Многоканальное аудио (и видео) HTML5

Также проверьте Howler.js, который поддерживает многодорожечное воспроизведение, и я думаю, что он лучше всего соответствует вашим потребностям.

Howler.js на GitHub

...