Я создаю пользовательский аудиоплеер (этап планирования на данный момент :)), и я застрял в этом. Я хочу рассчитать общую продолжительность всех моих песен в начале. Я знаю, что мне нужно загрузить каждую песню, чтобы узнать ее продолжительность. Если я устанавливаю атрибут src, например, для первой песни, я получаю его продолжительность с обработчиком событий загруженного метаданных. Но как получить их сумму? Нужно ли загружать каждый из них отдельно? Нужно ли устанавливать src attr для аудио-элемента для каждой песни, которую я имею в списке? Любые намеки были бы высоко оценены!Как рассчитать общую продолжительность набора треков с использованием аудио HTML5?
ответ
Я был здесь вчера, потому что мне нужно было решить эту ту же проблему, и, конечно же, StackOverflow был вершиной результатов поиска - даже для этих четырехлетних неотвеченных вопросов. Увы мои поиски нативного решения JS оказались безуспешными, хотя я попробовал несколько различных предложений от здесь и там, так вот что я в конце концов пришел сам с собой ...
function tracksTotalLength(Tracklist) {
var tempAudio = document.createElement('audio'),
L = Tracklist.length,
i = 0, // iterator
TTL = 0, // TotalTrackLength
flag = true;
// set media-type and mute (belt and braces)
tempAudio.type = 'audio/mpeg';
tempAudio.muted = true;
tempAudio.addEventListener(
'durationchange',
function(e) {
TTL += e.target.duration;
/* DEBUG ONLY */ console.log('TTL:',TTL);
recursiveUpdater(i++);
},
false
);
function recursiveUpdater(ii) {
if (!isNaN(TTL) && ii < L) {
tempAudio.src = Tracklist[ii];
// fires recursiveUpdater()
// via 'durationchange' event
} else {
// sometimes not all values are caught
// and TTL = NaN, so
// reset and have another run at it
if (isNaN(TTL) && flag) {
i = 0;
flag = false;
recursiveUpdater(i);
} else (
// but you can't recurse all day so
// remove tempAudio
tempAudio = null;
// if it hasn't caught return false
return (!isNaN(TTL) : TTL : false);
}
}
}
return recursiveUpdater(i);
}
var tracks = [
'path/to/track01.mp3',
'path/to/track02.mp3',
'path/to/track03.mp3',
/*...etc... */
];
var totalLength = tracksTotalLength(tracks);
//=> totalLength = seconds (float) or false
Функция tracksTotalLength()
возвращает общее время список в секундах, который затем может быть округлен в hh: mm: ss согласно классическому StackOverflow answer.
«Длительный обмен» запускается при загрузке или изменении метаданных. Подробнее об этом на Media Events (MDN)
Протестировано в последних браузерах Firefox и Chromium на Lubuntu 14.04 с треклистами из 5-50 предметов.
Надеюсь, это поможет кому-то или, по крайней мере, побуждает истинного гуру JS придумать лучшую рутину.
- 1. html5/javascript аудио воспроизводит несколько треков одновременно
- 2. Как рассчитать общую сумму с использованием совокупности
- 3. Как рассчитать продолжительность?
- 4. Как рассчитать продолжительность?
- 5. Как получить общую продолжительность ogg?
- 6. Как рассчитать общую группу?
- 7. Как извлечь продолжительность аудио/видеофайла?
- 8. продолжительность аудио возвращает 0,0
- 9. HTML5 Аудио-тег, показывающий неправильную продолжительность MP3 в Chrome
- 10. Как рассчитать продолжительность в днях?
- 11. Получение данных из аудио с использованием HTML5
- 12. Рассчитать продолжительность видео
- 13. Рассчитать продолжительность, используя excel
- 14. вычислить продолжительность для заданного набора timestamp
- 15. Воспроизведение файла PLS с использованием HTML5 аудио
- 16. Можно ли инвертировать аудио с использованием аудио-API HTML5?
- 17. Получить общую продолжительность времени группой из списка
- 18. Рассчитать продолжительность сеанса android
- 19. Рассчитать общую стоимость: 'С RECURSIVE'
- 20. Как реализовать аудио-чат HTML5
- 21. Как добавить и вычитать общую продолжительность
- 22. Как повторить html5 аудио
- 23. Как рассчитать общую сумму списка
- 24. Как рассчитать общую медаль спорта
- 25. Плавного HTML5 аудио логика
- 26. Как рассчитать общую стоимость заказа с Rails?
- 27. Как рассчитать общую продолжительность Convertion до преобразования с FFMPEG в nodeJS
- 28. HTML5 продолжительность видео
- 29. HTML5 Продолжительность видео
- 30. Аудио Продолжительность файла Использование JAVA
Я не думаю, что это возможно только с HTML5, так как нет спецификации для плейлистов или что-то в этом роде. Я думаю, вам нужно будет выполнить скрипт на стороне сервера, который будет использовать продолжительность аудио и загрузить результат на сайт. Вы также можете использовать Javascript для загрузки всех элементов в последовательности (см. Http://stackoverflow.com/questions/2551859/html-5-video-or-audio-playlist) и получить от этого длительность, однако это происходит чтобы занять некоторое время. –