2017-12-01 30 views
0

내 목표는 Icecast 서버에서 오는 라디오 스트림을 녹음하는 것입니다.NodeJS를 사용하여 오디오 스트림을 wav 파일로 저장하는 방법

icecast 노드 모듈을 사용하여 라디오 스트림을 가져온 다음 wav 모듈을 통해 스트림을 파이핑하여 웨이브 파일을 작성합니다. 여기

내 코드의 예입니다

const icecast = require('icecast'); 
const url = 'http://87.118.104.139/radiogibsonaac'; 
var wav = require('wav'); 

let ice, fileWriter; 

ice = icecast.get(url, res => { 
    fileWriter = new wav.FileWriter(__dirname+'/recording.wav', { 
     channels: 1, 
     sampleRate: 16000, 
     bitDepth: 128 
    }); 
    res.pipe(fileWriter); 
}); 


setTimeout(()=>{ 
    fileWriter.end(); 
    ice.end(); 
},5000); 

스트림이 예상 내가 VLC에서 파일을들을 수 있어요로 successully 내 디스크에 기록되어 있지만 wav 파일 자체가 보이지 않는다 올바르게 형성되어야한다.

다른 도구를 사용하여 파일을 편집하려고하면 매번 오류가 표시됩니다. 예를 들어, 오디오의 속도를 this site으로 변경하려고하는데 파일을 인식하지 못합니다. 또한

나는 그것이 표시 삭스 CLI를 사용하여 파일 정보를 보려고 경우 :

삭스는 형식을 FAIL : 열 수 없습니다 입력 파일`recording.wav이 '수 : 죄송합니다, .WAV을 이해하지 못하는 크기

디스크에 wav 파일을 쓰는 과정에서 누락 된 부분이 있는지 아는 사람 있습니까?

답변

1

스트림 URL을 기반으로하면 스트림이 AAC 형식 인 것처럼 보이며 해당 데이터를 WAV 파일에 직접 쓰려고하므로 WAV 헤더가 있지만 AAC 오디오 데이터가있는 파일로 끝납니다.

디스크에 스트림을 AAC로 기록한 다음 파일을 변환하거나 디스크에 기록하기 전에 스트림을 변환해야합니다.