Несколько звуковых дорожек для видео HTML5



Я создаю видео для своего сайта с помощью HTML5. В идеале, у меня был бы только один беззвучный видеофайл и пять различных звуковых дорожек на разных языках, которые синхронизируются с видео.



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



Я могу сделать это довольно просто в Flash, но я - не хочу. Должен быть способ сделать это в чистом HTML5 или HTML5+jQuery. Я думаю, что вы будете воспроизводить все аудиофайлы на 0 громкости и только увеличите громкость активной дорожки... но я даже не знаю, как это сделать, не говоря уже о том, чтобы справиться с этим, когда пользователь делает паузу или перематывает видео...



Заранее спасибо!

753   3  

3 ответов:

Если вы хотите загрузить все пять треков, почему бы просто не добавить их в видео? Видео не ограничивается одной звуковой дорожкой (даже AVI может делать несколько звуковых дорожек). Тогда синхронизация должна быть обработана за вас. Вы просто включаете/отключаете звуковые дорожки по мере необходимости.

Синхронизация между аудио и видео намного сложнее, чем простое одновременное включение аудио и видео. Звуковые карты будут воспроизводиться с несколько иной скоростью. (То, что для меня 44,1 кГц, для вас может быть 44,095 кГц.)

Часто видео синхронизируется с аудиопотоком, но этим занимается плеер. Загружая несколько объектов для воспроизведения, вы эффективно выводите их из синхронизации.

Единственный способ, как это будет работать, если вы может найти способ управлять различными аудиопотоками с помощью видеоплеера. Я не знаю, возможно ли это.

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

Если вам нужны только два языка, вы можно просто настроить баланс между левым и правым стереофоническим аудиоканалом.

Это выполнимо с Web Audio API.

Часть моей программы прослушивает события видеоэлемента и останавливает или перезапускает звуковые дорожки, созданные с помощью web audio API. Это дает мне возможность включать и выключать любой из треков в идеальной синхронизации.

Есть некоторые недостатки.

В Internet Explorer отсутствует поддержка API Web Audio, за исключением Edge.

Этот метод работает только с буферизованным звуком, и это ограничивает. Есть некоторые проблемы с большими файлами: https://bugs.chromium.org/p/chromium/issues/detail?id=71704

Comments

    Ничего не найдено.