29.03.2024, 15:45
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
много маленьких аудиофайлов
Ситуация такая - хочется сделать страничку, которая должна "издавать звуки", всякие разные и долго. Звуки - файлы mp3, маленькие (10-20 Кб) но их много (300 и больше). Существенно - страничка живет на локальном компьютере, т.е. ничего по сети не передавать не нужно.
Простейший вариант - тэг audio у которого скрипт по мере необходимости меняет атрибут src. Но тогда страничка будет в течении длительного времени (порядка часа) дергать жесткий диск, который иначе мог бы и отдохнуть, поспать.
Вижу два варианта 1) вместо множества отдельных mp3 файлов на диске конвертировать их в base64 и сделать массив на js. Наверно лучше в виде отдельного js-файла (чтобы HTML был обозримого размера). Но тогда такой js-файл получается размером несколько мегабайт, и все это данные, просто массив строк. 2) второй вариант - при открытии странички делать предзагрузку всех mp3-файлов. Хорошо ли это, предзагружать более 300 элементов audio? Какой вариант выбрать? Или может кто-то подскажет что-нибудь еще?
Последний раз редактировалось rgl, 29.03.2024 в 15:47.
|
|
29.03.2024, 16:20
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Предзагрузка делается для сетевых запросов. И часто предзагружается в кэш, который на диски. Для локальных файлов это ничего не даст.
|
|
29.03.2024, 16:27
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,794
|
|
Сообщение от rgl
|
Но тогда страничка будет в течении длительного времени (порядка часа) дергать жесткий диск, который иначе мог бы и отдохнуть, поспать.
|
Сообщение от rgl
|
Какой вариант выбрать?
|
Предлагаю забить на это и не париться с такой мотивацией.
Последний раз редактировалось Nexus, 30.03.2024 в 12:35.
|
|
30.03.2024, 01:27
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
Предзагружать - нормально, если тебе не жалко десятка мб всегда занятой на это памяти. Если по какой-то причине браузер будет выгружать их на диск(хотя сомневаюсь что он будет это делать для столь мелких файлов), то можно их загружать как те же base64 строки, у же строки он тргать не будет.
Nexus, если у автора HDD, то может раздражать, что он постоянно будет крутиться из-за такой фигни.
__________________
29375, 35
|
|
30.03.2024, 09:29
|
Аспирант
|
|
Регистрация: 02.11.2023
Сообщений: 30
|
|
rgl, если абстрагироваться от такой гипотетической проблемы, как "дёргание диска" и перейти непосредственно к решению на основе условий задачи, можно сделать так:
Вы утверждаете, что даже в Base64 все файлы будут весить всего несколько мегабайт. Можно предположить, что общий размер всех файлов несущественный. Если список файлов конечен, можно запаковать файлы, к примеру, в ZIP-формат без компрессии (нам нужно только чтение, без декомпрессии). При открытии страницы подгружать один ZIP-файл, декодировать все Blob-файлы в память (в массив) и подгружать при необходимости в атрибут "src" элемента "audio" с помощью URL.createObjectURL.
Вам потребуется подключить на странице любую библиотеку для декодирования ZIP-файлов.
|
|
30.03.2024, 12:37
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,794
|
|
Сообщение от Aetae
|
Nexus, если у автора HDD, то может раздражать, что он постоянно будет крутиться из-за такой фигни.
|
Сообщение от rgl
|
хочется сделать страничку, которая должна "издавать звуки", всякие разные и долго.
|
Я не думаю, что звук издаваемый HDD будет заглушать постоянно проигрываемые аудиофайлы. Дело скорее всего в беспокойстве автора за "ресурс" железа.
|
|
30.03.2024, 12:59
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
Nexus, ну если hdd меж чтениями звука будет успевать парковаться, то и на ресурс это повлияет.
__________________
29375, 35
|
|
30.03.2024, 13:58
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,794
|
|
Aetae, так моё изначальное предложение было не беспокоиться об ресурсе железа.
С моей точки зрения, производить какие-то оптимизации, чтобы сократить кол-во обращений к диску при загрузке этих 300 аудио не стоит усилий.
|
|
01.04.2024, 16:08
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
Всем спасибо.
Примечания:
1. Старенький домашний ноутбук у меня с жестким диском, и о его ресурсе беспокоюсь, плюс немного напрягает когда он после парковки просыпается и приходится пару секунд ждать.
2. "Забить" не интересно. А усилия для оптимизации минимальны, если не сказать нулевые. Присваивать атрибуту src либо имя файла, либо base64. Единственное дополнительное усилие - надо эти все файлы для начала конвертировать, но это минимальные усилия.
3. Памяти несколько мегабайт не жалко, т.к. для себя, на своем компьютере, где одновременно ничего больше не работает, что требует много памяти.
В результате, склоняюсь к base64
|
|
01.04.2024, 16:25
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
Оффтопик, если кому интересно, есть такой сайт, где аудиокурсы разных языков, каждый курс - 100 уроков, каждый урок - 20 фраз и выражений на изучаемом языке и аналог (перевод) на своем языке. Только вот беда, слушаешь, много раз, и, казалось бы, все запомнил, но потом переходишь к следующему, и следующему, и в конце концов многое из предыдущих уроков забывается. Надо повторять, но повторять весь урок не хочется, а только трудно запоминаемые фразы. Для этого хочу сделать что-то похожее на программу Anki, но с аудиокарточками. Кстати, на сайте, если копнуть поглубже, можно скачать не уроки, а отдельные фразы, всего в курсе 2000 (т.е. нарезать самому ничего не надо). Файлы mp3 битрейт 48
Код:
|
https://www.50languages.com/ |
|
|
|
|