2015-11-25 4 views
0

Я использую NodeJs с хромым и динамиком для воспроизведения mp3-звук, как это:Воспроизведение/пауза Аудио NodeJs STREAM

var stream = fs.createReadStream('/path/to/dir/file.mp3'); 
var decoder = new lame.Decoder(); 
var speaker; 

stream.pipe(decoder).on('format', function(format) { 
    speaker = new Speaker(format); 
    this.pipe(speaker); 
}); 

Этот код работает отлично, моя проблема в том, когда я хочу, чтобы это сделать паузу:

stream.unpipe(); 

Это работает, звук приостанавливается, но через 3-4 секунды я хочу, чтобы он мгновенно остановился. Я видел этот пост: https://stackoverflow.com/questions/30225379/node-lame-play-stop-and-resume-audio, но ответа нет. Я думаю, что есть задержка, потому что поток уже буферизуется в течение следующих 3-4 секунд, когда я вызываю unpipe (или я ошибаюсь?), И если да, есть ли способ правильно управлять буфером или очищать его, когда я звоню Неполадка?

спасибо.

ответ

0

Вы должны использовать метод .pause() в сочетании с .resume(), потому что прямо сейчас вы отсоединяете свой поток и закрываете файл.

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