Задержка звука в PhoneGap

Я использую javascript для воспроизведения короткого звука в своем приложении:

var audio = new Audio('sound.mp3');
audio.play();

Когда вызывается приведенный выше код, все приложение получает отставание/задержку. Примерно через 200-500 мс приложение продолжает работать в обычном режиме и воспроизводит звук. После проигрывания 2-3 раза звук как будто закешировался что ли, потому что потом работает как надо без лагов.

Это происходит при тестировании в приложении PhoneGap для iOS. Запуск на рабочем столе Chrome работает хорошо.


person Rasmus    schedule 23.09.2017    source источник
comment
Может быть, телефон, на котором вы тестируете, работает медленно?   -  person StackSlave    schedule 02.10.2017


Ответы (3)


Вы можете загрузить звук при запуске приложения и сохранить его в кеше. Затем просто играйте, когда это необходимо. Это должно уменьшить круг или даже опустить его.

person Mohamed Chaawa    schedule 02.10.2017
comment
Спасибо. Я не нашел хорошего решения для загрузки звука в кеш, поэтому я могу попробовать, вы знаете, как это сделать? - person Rasmus; 03.10.2017
comment
Этот плагин может быть очень полезным: github.com/floatinghotpot/cordova-plugin-nativeaudio - person Mohamed Chaawa; 03.10.2017

По сути, задержка в 200-500 мс не является ошибкой или проблемой производительности, это функция, необходимая для обнаружения возможного двойного нажатия.

Решение, чтобы избавиться от этой задержки:

1) Чтобы использовать комбинацию событий касания вместо события щелчка, Или

2) Используйте fastClick, если у вас нет jQuery Mobile.

3) Если fastclick не работает, используйте это:

      $('yourElement').on( 'touchstart', function ( startEvent ) {});
person Vikas Yadav    schedule 26.09.2017
comment
Я уже использую fastclick и touchstart. Это происходит не только при сенсорном запуске, задержка возникает, когда звук воспроизводится без прикосновения. - person Rasmus; 26.09.2017
comment
Это может быть проблема с кешем приложений. Попробуйте поиграть и с этим. Это может помочь. - person Vikas Yadav; 26.09.2017
comment
Я думаю, что душа - это то, что вы сказали. Звуки должны быть записаны перед воспроизведением. Загрузка звука в первый раз вызывает отставание. - person Rasmus; 02.10.2017

Поскольку это mp3-ссылка, устройство должно загрузить файл перед его воспроизведением, поэтому отставание. если вы хотите воспроизводить музыку без задержек, вам нужно потоковое мультимедиа.

Сервер Wowza позволяет настроить потоковое мультимедиа по протоколу m3u8 (HLS).

person Tapas    schedule 02.10.2017