Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   много маленьких аудиофайлов (https://javascript.ru/forum/misc/85821-mnogo-malenkikh-audiofajjlov.html)

rgl 29.03.2024 15:45

много маленьких аудиофайлов
 
Ситуация такая - хочется сделать страничку, которая должна "издавать звуки", всякие разные и долго. Звуки - файлы mp3, маленькие (10-20 Кб) но их много (300 и больше). Существенно - страничка живет на локальном компьютере, т.е. ничего по сети не передавать не нужно.
Простейший вариант - тэг audio у которого скрипт по мере необходимости меняет атрибут src. Но тогда страничка будет в течении длительного времени (порядка часа) дергать жесткий диск, который иначе мог бы и отдохнуть, поспать.
Вижу два варианта 1) вместо множества отдельных mp3 файлов на диске конвертировать их в base64 и сделать массив на js. Наверно лучше в виде отдельного js-файла (чтобы HTML был обозримого размера). Но тогда такой js-файл получается размером несколько мегабайт, и все это данные, просто массив строк. 2) второй вариант - при открытии странички делать предзагрузку всех mp3-файлов. Хорошо ли это, предзагружать более 300 элементов audio? Какой вариант выбрать? Или может кто-то подскажет что-нибудь еще?

voraa 29.03.2024 16:20

Предзагрузка делается для сетевых запросов. И часто предзагружается в кэш, который на диски. Для локальных файлов это ничего не даст.

Nexus 29.03.2024 16:27

Цитата:

Сообщение от rgl
Но тогда страничка будет в течении длительного времени (порядка часа) дергать жесткий диск, который иначе мог бы и отдохнуть, поспать.

Цитата:

Сообщение от rgl
Какой вариант выбрать?

Предлагаю забить на это и не париться с такой мотивацией.

Aetae 30.03.2024 01:27

Предзагружать - нормально, если тебе не жалко десятка мб всегда занятой на это памяти. Если по какой-то причине браузер будет выгружать их на диск(хотя сомневаюсь что он будет это делать для столь мелких файлов), то можно их загружать как те же base64 строки, у же строки он тргать не будет.:)

Nexus, если у автора HDD, то может раздражать, что он постоянно будет крутиться из-за такой фигни.:)

roland 30.03.2024 09:29

rgl, если абстрагироваться от такой гипотетической проблемы, как "дёргание диска" и перейти непосредственно к решению на основе условий задачи, можно сделать так:

Вы утверждаете, что даже в Base64 все файлы будут весить всего несколько мегабайт. Можно предположить, что общий размер всех файлов несущественный. Если список файлов конечен, можно запаковать файлы, к примеру, в ZIP-формат без компрессии (нам нужно только чтение, без декомпрессии). При открытии страницы подгружать один ZIP-файл, декодировать все Blob-файлы в память (в массив) и подгружать при необходимости в атрибут "src" элемента "audio" с помощью URL.createObjectURL.

Вам потребуется подключить на странице любую библиотеку для декодирования ZIP-файлов.

Nexus 30.03.2024 12:37

Цитата:

Сообщение от Aetae
Nexus, если у автора HDD, то может раздражать, что он постоянно будет крутиться из-за такой фигни.

Цитата:

Сообщение от rgl
хочется сделать страничку, которая должна "издавать звуки", всякие разные и долго.

Я не думаю, что звук издаваемый HDD будет заглушать постоянно проигрываемые аудиофайлы. Дело скорее всего в беспокойстве автора за "ресурс" железа.

Aetae 30.03.2024 12:59

Nexus, ну если hdd меж чтениями звука будет успевать парковаться, то и на ресурс это повлияет.:)

Nexus 30.03.2024 13:58

Aetae, так моё изначальное предложение было не беспокоиться об ресурсе железа.
С моей точки зрения, производить какие-то оптимизации, чтобы сократить кол-во обращений к диску при загрузке этих 300 аудио не стоит усилий.

rgl 01.04.2024 16:08

Всем спасибо.
Примечания:
1. Старенький домашний ноутбук у меня с жестким диском, и о его ресурсе беспокоюсь, плюс немного напрягает когда он после парковки просыпается и приходится пару секунд ждать.
2. "Забить" не интересно. А усилия для оптимизации минимальны, если не сказать нулевые. Присваивать атрибуту src либо имя файла, либо base64. Единственное дополнительное усилие - надо эти все файлы для начала конвертировать, но это минимальные усилия.
3. Памяти несколько мегабайт не жалко, т.к. для себя, на своем компьютере, где одновременно ничего больше не работает, что требует много памяти.
В результате, склоняюсь к base64

rgl 01.04.2024 16:25

Оффтопик, если кому интересно, есть такой сайт, где аудиокурсы разных языков, каждый курс - 100 уроков, каждый урок - 20 фраз и выражений на изучаемом языке и аналог (перевод) на своем языке. Только вот беда, слушаешь, много раз, и, казалось бы, все запомнил, но потом переходишь к следующему, и следующему, и в конце концов многое из предыдущих уроков забывается. Надо повторять, но повторять весь урок не хочется, а только трудно запоминаемые фразы. Для этого хочу сделать что-то похожее на программу Anki, но с аудиокарточками. Кстати, на сайте, если копнуть поглубже, можно скачать не уроки, а отдельные фразы, всего в курсе 2000 (т.е. нарезать самому ничего не надо). Файлы mp3 битрейт 48
Код:

https://www.50languages.com/


Часовой пояс GMT +3, время: 21:56.