повторный поток ледяного потока через nodejs - PullRequest
0 голосов
/ 23 сентября 2019

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

Мне интересно, почему следующий скрипт не позволяет пользователю слышать поток.

var http = require('http'),
    request = require('request'),
    remote = 'http://stream.radiomedia.com.au:8003/stream';

http.createServer(function (req, res) {

    res.writeHead(200, {
        'Content-Type': 'audio/mpeg',
        'Content-Length': 1500
    });
  // http://somewhere.com/noo.bin
  var remoteUrl = remote + req.url;
  request(remoteUrl).pipe(res);
}).listen(8080);

1 Ответ

0 голосов
/ 23 сентября 2019

Content-Length: 1500

Это ваша основная проблема.Вы должны оставить Content-Length неопределенным, так как он неопределен для вашего потока.

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

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

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

Для получения дополнительной информации,см. мой ответ здесь: Возможно ли динамическое объединение рекламы или сообщений в файл MP3 с помощью стандартного запроса GET?

...