много маленьких аудиофайлов
Ситуация такая - хочется сделать страничку, которая должна "издавать звуки", всякие разные и долго. Звуки - файлы mp3, маленькие (10-20 Кб) но их много (300 и больше). Существенно - страничка живет на локальном компьютере, т.е. ничего по сети не передавать не нужно.
Простейший вариант - тэг audio у которого скрипт по мере необходимости меняет атрибут src. Но тогда страничка будет в течении длительного времени (порядка часа) дергать жесткий диск, который иначе мог бы и отдохнуть, поспать. Вижу два варианта 1) вместо множества отдельных mp3 файлов на диске конвертировать их в base64 и сделать массив на js. Наверно лучше в виде отдельного js-файла (чтобы HTML был обозримого размера). Но тогда такой js-файл получается размером несколько мегабайт, и все это данные, просто массив строк. 2) второй вариант - при открытии странички делать предзагрузку всех mp3-файлов. Хорошо ли это, предзагружать более 300 элементов audio? Какой вариант выбрать? Или может кто-то подскажет что-нибудь еще? |
Предзагрузка делается для сетевых запросов. И часто предзагружается в кэш, который на диски. Для локальных файлов это ничего не даст.
|
Цитата:
Цитата:
|
Предзагружать - нормально, если тебе не жалко десятка мб всегда занятой на это памяти. Если по какой-то причине браузер будет выгружать их на диск(хотя сомневаюсь что он будет это делать для столь мелких файлов), то можно их загружать как те же base64 строки, у же строки он тргать не будет.:)
Nexus, если у автора HDD, то может раздражать, что он постоянно будет крутиться из-за такой фигни.:) |
rgl, если абстрагироваться от такой гипотетической проблемы, как "дёргание диска" и перейти непосредственно к решению на основе условий задачи, можно сделать так:
Вы утверждаете, что даже в Base64 все файлы будут весить всего несколько мегабайт. Можно предположить, что общий размер всех файлов несущественный. Если список файлов конечен, можно запаковать файлы, к примеру, в ZIP-формат без компрессии (нам нужно только чтение, без декомпрессии). При открытии страницы подгружать один ZIP-файл, декодировать все Blob-файлы в память (в массив) и подгружать при необходимости в атрибут "src" элемента "audio" с помощью URL.createObjectURL. Вам потребуется подключить на странице любую библиотеку для декодирования ZIP-файлов. |
Цитата:
Цитата:
|
Nexus, ну если hdd меж чтениями звука будет успевать парковаться, то и на ресурс это повлияет.:)
|
Aetae, так моё изначальное предложение было не беспокоиться об ресурсе железа.
С моей точки зрения, производить какие-то оптимизации, чтобы сократить кол-во обращений к диску при загрузке этих 300 аудио не стоит усилий. |
Всем спасибо.
Примечания: 1. Старенький домашний ноутбук у меня с жестким диском, и о его ресурсе беспокоюсь, плюс немного напрягает когда он после парковки просыпается и приходится пару секунд ждать. 2. "Забить" не интересно. А усилия для оптимизации минимальны, если не сказать нулевые. Присваивать атрибуту src либо имя файла, либо base64. Единственное дополнительное усилие - надо эти все файлы для начала конвертировать, но это минимальные усилия. 3. Памяти несколько мегабайт не жалко, т.к. для себя, на своем компьютере, где одновременно ничего больше не работает, что требует много памяти. В результате, склоняюсь к base64 |
Оффтопик, если кому интересно, есть такой сайт, где аудиокурсы разных языков, каждый курс - 100 уроков, каждый урок - 20 фраз и выражений на изучаемом языке и аналог (перевод) на своем языке. Только вот беда, слушаешь, много раз, и, казалось бы, все запомнил, но потом переходишь к следующему, и следующему, и в конце концов многое из предыдущих уроков забывается. Надо повторять, но повторять весь урок не хочется, а только трудно запоминаемые фразы. Для этого хочу сделать что-то похожее на программу Anki, но с аудиокарточками. Кстати, на сайте, если копнуть поглубже, можно скачать не уроки, а отдельные фразы, всего в курсе 2000 (т.е. нарезать самому ничего не надо). Файлы mp3 битрейт 48
Код:
https://www.50languages.com/ |
Часовой пояс GMT +3, время: 02:26. |