Есть ли простой способ получить длительность звука в формате a-frame?

Самый простой способ получить разницу между двумя датами:

var diff =  Math.floor(( Date.parse(str2) - Date.parse(str1) ) / 86400000); 

Вы получаете разницу дней (или NaN, если один или оба не могут быть проанализированы). Дата синтаксического анализа дала результат в миллисекундах, и чтобы получить его днем, вы должны разделить его на 24 * 60 * 60 * 1000

. Если вы хотите, чтобы он делился на дни, часы, минуты, секунды и миллисекунды:

function dateDiff( str1, str2 ) {
    var diff = Date.parse( str2 ) - Date.parse( str1 ); 
    return isNaN( diff ) ? NaN : {
        diff : diff,
        ms : Math.floor( diff            % 1000 ),
        s  : Math.floor( diff /     1000 %   60 ),
        m  : Math.floor( diff /    60000 %   60 ),
        h  : Math.floor( diff /  3600000 %   24 ),
        d  : Math.floor( diff / 86400000        )
    };
}

Вот моя рефакторинговая версия версии Джеймса:

function mydiff(date1,date2,interval) {
    var second=1000, minute=second*60, hour=minute*60, day=hour*24, week=day*7;
    date1 = new Date(date1);
    date2 = new Date(date2);
    var timediff = date2 - date1;
    if (isNaN(timediff)) return NaN;
    switch (interval) {
        case "years": return date2.getFullYear() - date1.getFullYear();
        case "months": return (
            ( date2.getFullYear() * 12 + date2.getMonth() )
            -
            ( date1.getFullYear() * 12 + date1.getMonth() )
        );
        case "weeks"  : return Math.floor(timediff / week);
        case "days"   : return Math.floor(timediff / day); 
        case "hours"  : return Math.floor(timediff / hour); 
        case "minutes": return Math.floor(timediff / minute);
        case "seconds": return Math.floor(timediff / second);
        default: return undefined;
    }
}
0
задан Uwe Keim 13 July 2018 в 11:28
поделиться

1 ответ

Чтобы получить это от звукового компонента, прикрепленного к элементу, вы можете записать

var mySound = document.querySelector('#yourElement').components.sound.attrValue.src

, затем

var myAudioDuration = document.querySelector(mySound).duration

И продолжительность будет сохранена в этой переменной.


В качестве альтернативы, если ваш аудиофайл сохранен в активах с идентификатором 'myAudio', например

<a-assets>
 <audio id="myAudio" src="path/to/audiofile.mp3"></audio>
</a-assets>

Вы можете написать

var myAudioDuration = document.querySelector('#myAudio').duration

И длительность будет сохранена в этой переменной.

Надеюсь, что это поможет

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

1
ответ дан Nick 17 August 2018 в 13:06
поделиться
  • 1
    Также можно дождаться загрузки audio.onloadedmetadata = function() { alert(audio.duration); }; – Utopiah 13 July 2018 в 11:13
  • 2
    Спасибо, много работает! :-) – Erik van Oosterhout 13 July 2018 в 11:38
Другие вопросы по тегам:

Похожие вопросы: