Как узнать сумму длительности аудиозаписей в файлах?
Есть папка со множеством вложенных папок с небольшими кусочками аудио. Нужно узнать суммарную длительность.
Можно ли с помощью кода, например, пройти по всем файлам и сложить их длительность? Какие библиотеки/функции использовать?
Ответы (2 шт):
Непроверенный пример:
from pathlib import Path
from librosa import get_duration # pip install librosa
wav_dir = Path("/path/to/wave_files")
res = sum(get_duration(filename=str(f)) for f in wav_dir.rglob("*.wav"))
print(res)
Эта утилита может не соответствовать меткам, так как написана на языке JavaScript. К тому же, все аудиофайлы дожны быть в одной папке. Создайте в этой же папке новый текстовый документ и назовите его, скажем, utilita.html и впишите туда такой код:
<html>
<body bgcolor=#ccc><center><h3>Утилита для определения сумарной длительности звучания</h3>
<div id=vybor>
<input type="file" multiple="multiple" id="myfile" onchange="mysum(this.files)">
</div><br>
<div id = resultat></div>
<script>
function mysum(e){
resultat.innerHTML = "подождите ...";
let b = 0;
for(var i = 0; i < e.length; i ++){
let a = new Audio(e[i].name);
a.onloadedMetaData = (function(){
b += a.duration;
resultat.innerHTML = "Сумарная длительность звучания всех выбранных МП3-файлов: <b>" + Math.round(b / 60) + "</b> минут";
};
}
}
vybor.innerHTML = vybor.innerHTML;
</script>
<center></body>
</html>
После сохранения перетащите мышью этот файл в новое окно браузера. На странице появится кнопка "выберите файлы". Выделите все аудиофайлы в этой папке и нажмите "выбрать". Результат увидите. Если вдруг вместо числа минут выскочит NaN, то попробуйте ещё раз. Даже если выберите не все аудиофайлы из папки, то подсчитается сумарная длительность звучания только выбранных файлов.