Потоковое аудио с Node.js с контролем полосы пропускания и динамическим переключением треков - PullRequest
0 голосов
/ 29 июня 2018

Предположим, у меня на сервере разные битрейты mp3 одной и той же песни. Можно ли заставить мой сервер узлов определять скорость, с которой клиент получает чанки и, таким образом, динамически переключаться между файлами? Например, сервер получает запрос на дорожку, а затем начинает передавать клиенту его версию со скоростью 192 кбит / с. После нескольких чанков он обнаруживает, что клиент не получает их достаточно быстро, и переключает источник данных на версию 128 кбит / с и т. Д. В настоящее время мне удалось сделать это только в виде простого теста, но он вообще не имеет параметров управления:

const mediaServer = require('mediaserver');
router.get('/play', function(req, res, next){
    mediaServer.pipe(req, res, appRoot + 'private/media/musica/m.mp3')
});

1 Ответ

0 голосов
/ 12 июля 2018

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

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

Это хорошо работает на практике, так как клиент все равно запрашивает порции, и он также лучше всего знает, может ли он обрабатывать более высокую скорость передачи данных или нужна более низкая, например, путем проверки входного буфера.

Существует несколько реализаций ABR с открытым исходным кодом, которые вы можете изучить, чтобы получить представление о том, как они работают - как уже упоминалось, большинство из них сфокусировано на видео, и поскольку звук обычно очень мал по сравнению с видео, вы, вероятно, обнаружите, что они не используют ABR для аудио но принципы будут такими же.

Вероятно, наиболее простыми из них являются video.js и dash.js:

В частности, если вы посмотрите на правила ABR в dash.js (dash.js / src / streaming / rules / abr / на момент написания), это поможет быстро понять, как они это реализовали - есть Немного опыта и логики, так что вам может быть проще всего использовать что-то захватывающее, как это.

...