Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Воспроизведение аудио (https://javascript.ru/forum/misc/81263-vosproizvedenie-audio.html)

him 30.10.2020 17:46

Воспроизведение аудио
 
Есть переменная JS. В ней данные в формате wave. Как их лучше воспроизвести в фоне. Визуализация не нужна. Нужно будет отловить событие - проигрывание завершено.

Nexus 30.10.2020 18:01

Цитата:

Сообщение от him
В ней данные в формате wave.

А тип данных в переменной какой?

him 30.10.2020 18:14

Хороший вопрос. Если честно, пока не знаю. Наверное string. Планируется получать ответ с сервера, из php. Запрос планируется отправлять через Ajax.

Как тогда нужно их, данные, отдавать из php ?

Nexus 30.10.2020 18:34

В свою переменную затолкайте ссылку либо на сам файл, либо на роут, который должен вернуть этот самый аудио-файл с соответствующими заголовками.

Дальше все просто (со своими нюансами): https://developer.mozilla.org/ru/doc...oElement/Audio
const audio = new Audio(audioFileUrl);
audio.addEventListener('canplaythrough', () => {
    audio.play();
});

him 30.10.2020 19:05

На стороне сервера не хочется сохранять файл, это занимает время, некий ресурс, так же надо отслеживать время жизни этого файла, определять время через которое этот файл надо подчистить - удалить файл.

Если делать заголовки на php, как ловить на JS ?

Nexus 30.10.2020 19:32

Цитата:

Сообщение от him
На стороне сервера не хочется сохранять файл

:blink: А изначально он где вообще?

him 30.10.2020 19:48

Программно создаю сам на php. Вот описание протокола. Он не сложный.
http://microsin.net/programming/pc/wav-format.html

Да, мы простых путей не ищем. :)

Nexus 30.10.2020 20:33

Цитата:

Сообщение от him
Программно создаю сам на php.

Ну так если он создается "на лету", то сразу же его и отдавайте вашему фронту минуя кеширование на диск.

Я ж сразу об этом написал:
Цитата:

Сообщение от Nexus
В свою переменную затолкайте ссылку [...] на роут, который должен вернуть этот самый аудио-файл с соответствующими заголовками.


him 30.10.2020 21:38

А можно по подробней про ссылку на [...] и роут с заголовками ?

Ссылку я кстати читал, до всех вопросов. Но там src/url который я так понимаю хочет файл, а у меня его нету. :)

Если речь о роуте типа Человека Понятные Урлы, так смысл в нем ?
Хотя ...
Отправляю ссылку уникальную, ее получается надо где-то сохранить, что бы потом ловить к ней обращение ?
Через файл ? Через базу ? Что то реализация не выстраивается ..

Nexus 30.10.2020 22:00

Цитата:

Сообщение от him
Но там src который я так понимаю хочет файл, а у меня его нету.

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

Google: о передаче файла клиенту
Хабр: тоже самое

В третьем сообщении этой темы вы написали, что файл собираетесь с сервера тянуть с помощью асинхронного запроса, значит файл у вас генерится по требованию клиента, значит публичный адрес у этого скрипта есть.

Прочитайте хотя бы статью на хабре, там даже пример кода есть. Вам только нужно подставить свой content-type и отдавать не файл из файловой системы, а тот, который вы сгенерили.


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