Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

Как сделать минимальный пример с видео на nodejs?

Как не подключая сторонних модулей сделать пример http-сервера с видео на странице?


Ответ

Вот минимальный пример:
Берём два видео со страницы 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):

Test with 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); Запускаем
node $server-video.js Убеждаемся, что видео воспроизводится, не работает только перемотка. Пробуем убрать из разметки mp4-версию и видим тот же результат.

Почему не работает перемотка?
Вероятно это происходит из-за того, что хром в таком случае хочет видеть поддержку partial-ответов, которую мы не реализовали.

Комментариев нет:

Отправить комментарий