我在客户端有一个基本的html5播放器。我正在通过参数获取特定视频的请求。我在空项目上尝试过它运行良好。然后我将获取请求复制到我的实际项目中,并且它给了我ERR_CONNECTION_REFUSED错误。我被困了,我真的需要帮助。
这是我的获取方法:
// Send Video to HTML5 player
app.get('/api/video/:folder' , function(req, res) {
var folder = req.params.folder;
const path = 'D:/VideoClips/' + folder + '/clip.mp4';
const stat = fs.statSync(path);
const fileSize = stat.size;
const range = req.headers.range;
if (range) {
const parts = range.replace(/bytes=/, "").split("-");
const start = parseInt(parts[0], 10);
const end = parts[1]
? parseInt(parts[1], 10)
: fileSize-1;
const chunksize = (end-start)+1;
const file = fs.createReadStream(path, {start, end});
const head = {
'Content-Range': `bytes ${start}-${end}/${fileSize}`,
'Accept-Ranges': 'bytes',
'Content-Length': chunksize,
'Content-Type': 'video/mp4',
}
res.writeHead(206, head);
file.pipe(res);
} else {
const head = {
'Content-Length': fileSize,
'Content-Type': 'video/mp4',
}
res.writeHead(200, head);
fs.createReadStream(path).pipe(res);
}
});
我只是用javascript更改html5播放器的src。当它改变了它向服务器发出请求时:
var player = document.getElementById('videoPlayer');
player.src = 'http://xxx.xxx.xx.xx:4000/api/video/' + folder;
我无法找到任何拒绝连接的理由。 chrome developer的错误日志:
GET http://xxx.xxx.xx.xx:4000/api/video/testfolder_30 net::ERR_CONNECTION_REFUSED