<!doctype html>
<title>Test with video</title>
<video controls>
<source src="mov_bbb.mp4" type="video/mp4">
<source src="mov_bbb.ogg" type="video/ogg">
Your browser does not support HTML5 video.
</video>
我们编写服务器代码($server-video.js):
var http = require('http');
var fs = require('fs');
http.createServer(function (request, response) {
var file = decodeURIComponent(request.url.substr(1));
var headers = {};
console.log(file);
switch(file) {
case "":
case "video-test.html":
file = "video-test.html";
headers['Content-Type'] = 'text/html; charset=UTF-8';
break;
case "mov_bbb.mp4":
headers['Content-Type'] = 'video/mp4';
break;
case "mov_bbb.ogg":
headers['Content-Type'] = 'video/ogg';
break;
default:
response.writeHead(404, { 'Content-Type': 'text/plain' });
response.end('Not found!');
return;
}
fs.stat(file, function (error, data) {
if (error) {
console.log(error);
response.writeHead(500, { 'Content-Type': 'text/plain' });
response.end('An error occured while loading file information :(');
} else if (!data.isFile()) {
response.writeHead(403, { 'Content-Type': 'text/plain' });
response.end('Not a file');
} else {
headers['Content-length'] = data.size;
response.writeHead(200, headers);
fs.createReadStream(file).pipe(response);
}
});
}).listen(8081);
这是一个最小的例子:
我们通过视频标签从 w3c 页面获取两个视频:http: //www.w3schools.com/html/html5_video.asp
文件本身:
http ://www.w3schools.com/html/mov_bbb.mp4
http://www.w3schools.com/html/mov_bbb.ogg
制作一个最小的 html 页面 (video-test.html):
我们编写服务器代码($server-video.js):
发射
我们确保视频正在播放,只有倒带不起作用。
我们尝试从标记中删除 mp4 版本并看到相同的结果。
为什么倒带不起作用?
这可能是因为 chrome 在这种情况下希望看到对我们没有实现的部分响应的支持。