Junkee[]
Lounge-Member
Hey, ich weiß nicht ob sich hier jemand mit node.js auskennt oder nicht aber ich frag jetzt einfach mal 
ich versuche gerade ein ogv Video zu einem html5 Video Tag zu streamen. Funktioniert im FF, nicht aber in Chrome und Opera. Der Opera sendet im range header von x bis x bytes an, wodurch Content-Length Null ist. Der Chrome will anscheinend kein ogv entgegen nehmen. Er sendet gar kein range Header.
Im Verzeichnis gibt es das verzeichnis src, in dem sich die Videos, die Datei mit der 404-Meldung und eine index.html, die das Video einbindet, befinden.
ich versuche gerade ein ogv Video zu einem html5 Video Tag zu streamen. Funktioniert im FF, nicht aber in Chrome und Opera. Der Opera sendet im range header von x bis x bytes an, wodurch Content-Length Null ist. Der Chrome will anscheinend kein ogv entgegen nehmen. Er sendet gar kein range Header.
Code:
var http = require("http"),
sys = require("sys"),
util = require("util"),
fs = require("fs");
// doing realy ugly things but just want to get it work first...
var mp4Video = fs.readFileSync("./src/video.mp4", "binary");
var ogvVideo = fs.readFileSync("./src/video.ogv", "binary");
http.createServer(function(req, res) {
if(/\.(mp4|ogv)$/.test(req.url)) {
sys.puts("video request");
if(!req.headers.range) {
var start = 0;
var end = false;
}
else {
var match = /^bytes=([0-9]+)\-([0-9]+)?$/.exec(req.headers.range);
var start = parseInt(match[1]);
var end = parseInt(match[2]);
if(isNaN(end)) end = false;
}
if(/mp4$/.test(req.url)) {
if(!end) end = mp4Video.length;
res.writeHead(206, {
"Content-Range": "bytes " + start + "-" + end + "/" + mp4Video.length,
"Content-Length": end-start,
"Content-Type": "video/mp4",
"Accept-Ranges": "bytes"
});
res.end(mp4Video.slice(start, end), "binary");
}
else {
if(!end) end = ogvVideo.length;
res.writeHead(206, {
"Content-Range": "bytes " + start + "-" + end + "/" + ogvVideo.length,
"Content-Length": end-start,
"Content-Type": "video/ogg",
"Accept-Ranges": "bytes"
});
res.end(ogvVideo.slice(start, end), "binary");
}
}
else {
if(/\/$/.test(req.url))
req.url += "index.html";
fs.stat("./src" + req.url, function(er, stat) {
if(er) {
req.url = "/notfound.html";
}
var file = fs.createReadStream("./src" + req.url);
util.pump(file, res);
});
}
}).listen(8080);
Code:
<!DOCTYPE html>
<html>
<head>
<title>HTML5 Video with node.js</title>
</head>
<body>
<h1>HTML5 Video with node.js</h1>
<video width="640" height="480" controls="controls">
<!--source src="video.mp4" type="video/mp4" /-->
<source src="video.ogv" type="video/ogg" />
This browser is not compatible with HTML 5
</video>
</body>
</html>