Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   video stream (https://javascript.ru/forum/node-js-io-js/54565-video-stream.html)

cyber 23.03.2015 07:09

video stream
 
Не пойму про стримминг видео .
У нас есть на сервере файл video.mp4 нам нужно отдать его на клиент.
1. Нужно установить заголовки и проверить range
header = {
        "Cache-Control": "public; max-age=36000",
        Connection: "keep-alive",
        "Content-Type": info.mime,
        "Content-Disposition": "inline; filename=" + info.file + ";",
        "Accept-Ranges": "bytes"
    };

    if (info.rangeRequest) {
        // Partial http response
        code = 206;
        header.Status = "206 Partial Content";
        header["Content-Range"] = "bytes " + info.start + "-" + info.end + "/" + info.size;
    }


2. Нужно создать стрим отдать его на клиент


stream = fs.createReadStream(info.path, { flags: "r", start: info.start, end: info.end });
stream = stream.pipe(new Throttle(settings.throttle))

stream.pipe(res);

stream.on ( "close", function ( ) {
   res.status(200).end(0);
} );


или так

stream = fs.createReadStream(info.path, { flags: "r", start: info.start, end: info.end });

stream.pipe(res);

stream.on ( "close", function ( ) {
   res.status(200).end(0);
} );


Но при попытке открыть 2 вкладки с одними и теми же видео видео одна вкладка висит пока открыта первая.. Если использовать статик сервер тоже самое.
Вот демка на статик сервере thecyber.16mb.com/player/
Как решить єту проблему? И чего я не пойму ?

MallSerg 23.03.2015 08:28

Использовать ноду для стриминга это плохая идея (.
Пока это похоже на попытку своими силами реализовать RTSP
Имхо гораздо проще смотреть в сторону уже готовых решений например nginx rtsp streaming
есть специальная библиотека для вещяния медиа потоков live555
или использовать VLC плеер он умеет вещать почти в любом формате и легко управляется через telnet или консоль

cyber 23.03.2015 15:39

MallSerg, понял. То что нужно огромное спасибо. Я искал решения на ноде, а нужно было искать решение не на ноде)


Часовой пояс GMT +3, время: 21:38.