Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.03.2024, 15:45
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 29.03.2024, 16:20
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Предзагрузка делается для сетевых запросов. И часто предзагружается в кэш, который на диски. Для локальных файлов это ничего не даст.
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2024, 16:27
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

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

Последний раз редактировалось Nexus, 30.03.2024 в 12:35.
Ответить с цитированием
  #4 (permalink)  
Старый 30.03.2024, 01:27
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

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

Nexus, если у автора HDD, то может раздражать, что он постоянно будет крутиться из-за такой фигни.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2024, 09:29
Аспирант
Отправить личное сообщение для roland Посмотреть профиль Найти все сообщения от roland
 
Регистрация: 02.11.2023
Сообщений: 30

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

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

Вам потребуется подключить на странице любую библиотеку для декодирования ZIP-файлов.
Ответить с цитированием
  #6 (permalink)  
Старый 30.03.2024, 12:37
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

Сообщение от Aetae
Nexus, если у автора HDD, то может раздражать, что он постоянно будет крутиться из-за такой фигни.
Сообщение от rgl
хочется сделать страничку, которая должна "издавать звуки", всякие разные и долго.
Я не думаю, что звук издаваемый HDD будет заглушать постоянно проигрываемые аудиофайлы. Дело скорее всего в беспокойстве автора за "ресурс" железа.
Ответить с цитированием
  #7 (permalink)  
Старый 30.03.2024, 12:59
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

Nexus, ну если hdd меж чтениями звука будет успевать парковаться, то и на ресурс это повлияет.
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 30.03.2024, 13:58
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

Aetae, так моё изначальное предложение было не беспокоиться об ресурсе железа.
С моей точки зрения, производить какие-то оптимизации, чтобы сократить кол-во обращений к диску при загрузке этих 300 аудио не стоит усилий.
Ответить с цитированием
  #9 (permalink)  
Старый 01.04.2024, 16:08
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Всем спасибо.
Примечания:
1. Старенький домашний ноутбук у меня с жестким диском, и о его ресурсе беспокоюсь, плюс немного напрягает когда он после парковки просыпается и приходится пару секунд ждать.
2. "Забить" не интересно. А усилия для оптимизации минимальны, если не сказать нулевые. Присваивать атрибуту src либо имя файла, либо base64. Единственное дополнительное усилие - надо эти все файлы для начала конвертировать, но это минимальные усилия.
3. Памяти несколько мегабайт не жалко, т.к. для себя, на своем компьютере, где одновременно ничего больше не работает, что требует много памяти.
В результате, склоняюсь к base64
Ответить с цитированием
  #10 (permalink)  
Старый 01.04.2024, 16:25
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как с помощью скрипта высчитать ширину полосы прокрутки? LADYX Элементы интерфейса 35 13.11.2017 12:50
API карт гугла и яндекса, как подгружать много меток? SuperBenza Общие вопросы Javascript 13 13.12.2016 22:10
Много select-ов и много кнопок eFusion Элементы интерфейса 2 18.04.2014 23:35
Через ajax отправить много данных из таблицы на сервер Heger jQuery 3 29.08.2012 18:51
Чудеса математики js при padding borovik Элементы интерфейса 6 09.07.2011 22:02