HTML5 <audio> split source (Воспроизведение браузером кусков медиаданных)

IDE, VCS и прочее

Модератор: Модераторы разделов

Ответить
Аватара пользователя
denel
Сообщения: 497
ОС: Gentoo Linux
Контактная информация:

HTML5 <audio> split source

Сообщение denel »

Привет всем!
Я уже имею некоторый опыт захвата mp3 http или udp пакетов с дальнейшей её переотправкой и приёмом, воспроизведением в месте назначения. Нечто подобное неплохо бы осилить и с HTML5 <audio> в плане приёма и воспроизведения не определённого файла, не потока, а кусков, которые бы подсовывал ему JavaScript после приёма по определённому алгоритму, а audio элемент, в свою очередь, непрерывно воспроизводил бы эти данные, будто он дело имеет с octet-stream. Пока не могу сообразить, как это можно обеспечить. Каждый кусок ведь представляет из себя не законченный медиа файл со всей соответствующей meta информацией, а всего лишь грубо, но при этом ровно порубленную часть бесконечно идущего потока.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: HTML5 <audio> split source

Сообщение Bizdelnick »

Нечто подобное давно реализовано для видео в HLS и MPEG-DASH. Можно просто использовать HLS без видеодорожки, например. Главное — там используется контейнер MPEG TS, в котором каждый фрагмент самодостаточен.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
denel
Сообщения: 497
ОС: Gentoo Linux
Контактная информация:

Re: HTML5 <audio> split source

Сообщение denel »

Bizdelnick писал:
26.04.2021 22:26
Нечто подобное давно реализовано для видео в HLS и MPEG-DASH. Можно просто использовать HLS без видеодорожки, например. Главное — там используется контейнер MPEG TS, в котором каждый фрагмент самодостаточен.
Минуточку... Так ведь и я использую контейнер MPEG-TS, но делает ли это мои куски (пакеты) самодостаточными? Есть ли в звуке "ключевые кадры"? И я с трудом представляю, каким образом я могу по времени правильно запускать play(), чтобы оно воспроизводилось без накладок и без дыр.

Ладно, подумаем об HLS. Мне кусками грузить надо не для того, чтобы грузить кусками, а для того, чтобы посредством JS далее это в определённой последовательности подсовывать плееру, а именно, для организации продолжительного кеша. Например в потоке транлируется радио, где говорится о том, что сейчас 13:00:00, а плеер это должен озвучить только тогда, когда наступит 13:01:00. И напротив: включаешь воспроизведение в 13:00:00, JS тут же загрузил всё, начиная с 12:59:00 вплоть до 12:59:59.99 и начал воспроизводить, таким образом у него скажут, что сейчас 13:00:00 только в 13:01:00, в это время уже будут JS загружены куски от 13:00:59.99, хотя, повторюсь, воспроизводятся куски от 13:00:00.00. Я Так же не нашёл, как загруженные HLS куски подсовывать плееру, везде пишут только о том, что плееру подсовываешь некий плейлист, находящийся на сервере. Возможно ли организовать в этих условиях такой кеш?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: HTML5 <audio> split source

Сообщение Bizdelnick »

denel писал:
27.04.2021 06:23
Так ведь и я использую контейнер MPEG-TS
Вы же писали про MP3. Это не MPEG-TS.
denel писал:
27.04.2021 06:23
делает ли это мои куски (пакеты) самодостаточными?
Если границы Ваших пакетов совпадают с границами пакетов MPEG-TS, то да.
denel писал:
27.04.2021 06:23
Есть ли в звуке "ключевые кадры"?
В MP3 все фреймы равноценны и самодостаточны.
denel писал:
27.04.2021 06:23
Я Так же не нашёл, как загруженные HLS куски подсовывать плееру, везде пишут только о том, что плееру подсовываешь некий плейлист, находящийся на сервере.
HLS-плеер, в том числе и написанный на JS, парсит плейлист и подгружает куски. Возьмите код любой открытой реализации и посмотрите, как он это делает.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить