Я пытаюсь настроить веб-сервер, который будет поддерживать потоковое видео в теге HTML5 с помощью node.js. Вот мой код:
var range = request.headers.range;
var total = file.length;
var parts = range.replace(/bytes=/, "").split("-");
var partialstart = parts[0];
var partialend = parts[1];
var start = parseInt(partialstart, 10);
var end = partialend ? parseInt(partialend, 10) : total-1;
var chunksize = (end-start)+1;
response.writeHead(206, { "Content-Range": "bytes " + start + "-" + end + "/" + total, "Accept-Ranges": "bytes", "Content-Length": chunksize, "Content-Type": type });
response.end(file);
Где "запрос" представляет HTTP-запрос, введите либо "application/ogg", либо "video/ogg" (я пробовал оба), а "файл" - это .ogv файл, который был прочитан из файловой системы. Вот заголовки ответов:
Content-Range bytes 0-14270463/14270464
Accept-Ranges bytes
Content-Length 14270464
Connection keep-alive
Content-Type video/ogg
Я рассмотрел заголовки ответов, и этот код работает нормально, но есть несколько проблем:
- Видео очень медленно загружается для локальной сети. Из того, что я могу рассказать об анализе ответа с помощью firebug, файл, по-видимому, транслируется со скоростью около 150 кбит/с.
- Видео не воспроизводится вообще. Даже если я дождался загрузки всего этого, тег HTML 5 просто показывает большой "х", а не фильм в firefox.
Есть ли у кого-нибудь идеи относительно того, что я могу сделать, чтобы потоковая передача видео работала через node.js?
Спасибо!
Крис