Страницы

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

четверг, 5 декабря 2019 г.

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

#nodejs #html5 #видео


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


Ответы

Ответ 1



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

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

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