Node.js NodeJS-正在下载的流视频
我正在编写一个程序,将当前下载到驱动器上的视频文件流式传输。我遇到的问题似乎是让浏览器实际播放视频。脚本侦听文件更改,然后流式传输其余内容,但浏览器除了显示空白视频页面外,什么也不做Node.js NodeJS-正在下载的流视频,node.js,video-streaming,http-live-streaming,Node.js,Video Streaming,Http Live Streaming,我正在编写一个程序,将当前下载到驱动器上的视频文件流式传输。我遇到的问题似乎是让浏览器实际播放视频。脚本侦听文件更改,然后流式传输其余内容,但浏览器除了显示空白视频页面外,什么也不做 var fs = require('fs'), http = require('http'), filename = '/home/qrpike/Videos/topgears.mp4'; http.createServer(function (req, re
var fs = require('fs'),
http = require('http'),
filename = '/home/qrpike/Videos/topgears.mp4';
http.createServer(function (req, res) {
console.log(req.url);
if( req.url == '/video.mp4'){
res.writeHead(200,{
'Content-Type' : 'video/mp4',
'Cache-Control' : 'public',
'Connection' : 'keep-alive',
'Content-Disposition' : 'inline; filename=topgears.mp4;',
'Content-Transfer-Encoding' : 'binary',
'Transfer-Encoding' : 'chunked'
});
fs.open(filename, 'r', function(err, fd) {
if (err) throw new Error('Could not open file');
var position = 0;
fs.stat(filename, read);
fs.watchFile(filename, read.bind(null, null));
function read(err, stat) {
var delta = stat.size - position;
if (delta <= 0) return;
fs.read(fd, new Buffer(delta), 0, delta, position, function(err, bytes, buffer) {
console.log("err", err, "bytes", bytes, "position",position,"delta",delta);
res.write(buffer.toString('binary'));
});
position = stat.size;
}
});
}
}).listen(1337);
console.log('Server running at http://127.0.0.1:1337/');
var fs=require('fs'),
http=require('http'),
filename='/home/qrpike/Videos/topgears.mp4';
http.createServer(函数(req,res){
控制台日志(请求url);
如果(req.url='/video.mp4'){
文书标题(200{
“内容类型”:“视频/mp4”,
“缓存控制”:“公共”,
“连接”:“保持活动状态”,
“内容配置”:“内联;文件名=topgears.mp4;”,
“内容传输编码”:“二进制”,
“传输编码”:“分块”
});
打开(文件名'r',函数(err,fd){
如果(err)抛出新错误(“无法打开文件”);
var位置=0;
fs.stat(文件名,读取);
fs.watchFile(文件名,read.bind(null,null));
函数读取(错误、状态){
var delta=统计尺寸-位置;
如果(delta那么这个答案取决于,理论上这正是你想要的。我担心的是,这个项目已经两年没有提交了,所以我不知道它是否仍然有效。这就是说,这对我在本地有效(尽管我没有测试视频文件的管道):
var fs = require('fs');
var http = require('http');
var GrowingFile = require('growing-file');
var FILENAME = '/home/dave/Desktop/video/video.ogg';
var server = http.createServer(function(req, res) {
var file;
if (req.url === '/video.ogg') {
res.writeHead(200, {
'Content-Type': 'video/ogg'
});
file = GrowingFile.open(FILENAME);
file.pipe(res);
} else {
res.statusCode = 404;
res.end('Not Found');
}
});
server.listen(1337);