В моем приложении Three.js я разработал простой способ загрузки, воспроизведения и анализа аудио, который работает как на настольном, так и на мобильном устройстве. Необходимо использовать THREE.Audio, потому что HTML5 Audio Analyzer не работает на мобильных устройствах, вместо этого THREE.AudioAnalyser, да.
Очень рад, кроме того, что я не могу найти способ:
- получить текущее время воспроизведения звука
- установить функцию onEnded
Вот код:
function soundLoad() {
listener = new THREE.AudioListener();
audio = new THREE.Audio( listener );
audioLoader = new THREE.AudioLoader();
analyser = new THREE.AudioAnalyser( audio, 32 );
audioLoader.load( 'audio/01.mp3', function( buffer ) {
audio.setBuffer( buffer );
audio.setLoop( false );
audio.setVolume( 1 );
(function readyToGo() {
console.log(audio.buffer.duration); // yes it works
document.getElementById('btnPlay').addEventListener( 'click', function(){
audio.play();
setInterval(function(){
console.log(audio.context.currentTime); // starts counting from the loading, not from the actual play
console.log(audio.buffer.currentTime); // doesnt' work
}, 10);
}, false);
// audio.onEnded = function() { console.log(‘end’);};
// audio.buffer.onEnded = function() { console.log(‘end’);};
// audio.source.onEnded = function() { console.log(‘end’);}; //none of them works
})();
});}
Надеемся, что есть решение для обеих проблем, без необходимости создания фактического ctx или других третьих частей. спасибо!