Я пытаюсь написать RIA, который можно использовать как на мобильных, так и на настольных браузерах. Одной из главных целей этого приложения является воспроизведение звуков. Может быть много X (на данный момент есть 150+)Динамически созданный аудио-объект, не играющий в браузере Android Chrome
При определенном действии пользователя я хочу создать новый аудио объект, загрузить определенный клип и воспроизвести его. В идеале я бы создал новый объект «Audio», установил src wait load, а затем воспроизвел. Это работает на разных настольных браузерах, но, похоже, не работает на Android 4.2, Chrome и биржевых браузерах.
Я попытался 4 различных способов, включая аудио:
- В том числе (в HTML) только аудио блок, пусть он загрузит во время выполнения и вызов .play(); Однако это работает. Это означает, что я должен создать 150 + звуковых блоков. (это работает везде)
- Создайте новый экземпляр «Audio» и динамически настройте атрибут .src, а затем на loadcomplete call .play() (похоже, это работает только на настольных браузерах, НЕ на моем мобильном телефоне)
- Используйте jQuery для создания нового звукового тега, добавьте в dom, дождитесь загрузки, затем воспроизведите (это, похоже, работает только на настольных браузерах, а не на моем мобильном телефоне)
- Добавить звуковые теги в html с указанием, чтобы не загружать, ждать пользователя затем загрузите его, дождитесь его готовности, затем играйте (это работает везде).
Итак, большой вопрос: любая идея, почему это не работает?
** Редактировать ** Я знаю, что только один файл может воспроизводиться за раз, и именно это я и делаю здесь. Проект (функционально) похож на телефонную службу, где у вас есть 1 человек, записывающий цифры 0 - 9, затем он «говорит» номер телефона так «5». '5'. '5'. '0'. '1 '..... и т. д. Таким образом, один аудиопоток за один раз вполне приемлем ... Это просто заставить его играть, в чем проблема.
Как прямо сейчас, у меня есть следующий код, который также можно найти here
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
var $a1, $a2, $a3, $a4;
$(document).ready(function(){
_setupVars();
_addListeners();
})
function _setupVars(){
$a1 = $("#audio1");
$a2 = $("#audio2");
$a3 = $("#audio3");
$a4 = $("#audio4");
}
function _addListeners(){
$a1.click(_handleAudio1);
$a2.click(_handleAudio2);
$a3.click(_handleAudio3);
$a4.click(_handleAudio4);
}
function _handleAudio1(){
$("#america")[0].play();
}
function _handleAudio2(){
var a = new Audio();
$(a).on("canplay", function(){
a.play();
})
if(a.canPlayType("audio/mp3"))
a.src = "audio/test2.mp3";
else if(a.canPlayType("audio/ogg"))
a.src = "audio/test2.ogg";
}
function _handleAudio3(){
var $x = $('<audio id="says">'+
'<source src="audio/test3.mp3">'+
'<source src="audio/test3.ogg">'+
'</audio>');
$x.on("canplay", function(){
$x[0].play();
})
$("#audioCont").append($x);
}
function _handleAudio4(){
var $x =$("#cat");
$x.on("canplay", function(){
$x[0].play();
})
$x[0].load();
}
</script>
</head>
<body>
<input type="button" id="audio1" value="play Audio Tag"/><br />
<input type="button" id="audio2" value="play audio object"/><br />
<input type="button" id="audio3" value="play dynamic Audio Tag"/><br />
<input type="button" id="audio4" value="play load Audio Tag, then play"/><br />
<audio id="america">
<source src="audio/test1.mp3">
<source src="audio/test1.ogg">
</audio>
<audio id="cat">
<source src="audio/test4.mp3">
<source src="audio/test4.ogg">
</audio>
</body>
</html>
Я в порядке с 1 очками за один раз. Проект (функционально) похож на телефонную службу, где у вас есть 1 человек, записывающий цифры 0 - 9, затем он «говорит» номер телефона так «5». '5'. '5'. '0'. '1 '..... и т. д. Таким образом, один аудиопоток в то время совершенно приемлем ... Это просто попытка воспроизвести, в чем проблема (в хроме, еще не найдено устройство ios для тестирования) – whomba
A один мультимедийный файл может воспроизводиться только с пользовательским взаимодействием, по одному за раз. – idbehold