2014-09-27 6 views
0

내 루트 디렉토리에있는 mp4 파일을 파이프하려고하지만 스트리밍을 위해 버퍼링을 시작하지만 결코 파일을 재생하지 못합니다.node.js에서 mp4 파일을 파이프 할 수 없습니다

여기 내 코드

var http = require('http'), 
    server = http.createServer(), 
    fs = require('fs'), 
    rs = fs.createReadStream('./Practice/Jumanji.mp4'); 
server.on('request', function(req, res) { 
    res.writeHead(200, { 
     'Content-Type': 'video/mp4' 
    }); 
    rs.pipe(res); 
    res.end(); 
}); 
server.listen(4000); 

영화로드하려고하지만,하지 않을 것입니다. 스트림이 이미 닫혀 있기 때문에

답변

1

당신은 당신이 하나의 비디오를 가져 그래서 일단

  1. 스트림은, 한 번 사용 객체 참조 코드에서이 문제가, 두 번째 요청이 실패합니다. rs = fs.createReadStream('./Practice/Jumanji.mp4'); 행은 콜백 내부에 있어야합니다.
  2. 이 경우 오류의 원인은 res.end();입니다. 파이프가 비디오를 쓸 시간이 있기 전에 즉시 res을 닫습니다. 따라서 본질적으로 "Send this stream" 다음에 즉시 "Send nothing"이 나오는 것입니다. 모든 데이터가 기록 될 때 파이프가 자동으로 res을 닫으므로 해당 행을 삭제해야합니다.

이 모든 내용에는 예제가 누락 된 많은 오류 처리 논리가 포함되어 있으므로 고려해야 할 사항입니다.

+0

고마워요. 이제 명백한 오류를 보았습니다. 나는 단지 node.js를 시작 했으므로 시간이 없어 더 좋아질 것입니다. – Mcs

관련 문제