使用Nginx或节点

时间:2018-05-01 03:39:19

标签: node.js nginx video-streaming hls hls.js

我们必须将存储的HLS(.m3u8,非实时)文件流式传输到本地服务器上的客户端。多个客户端同时请求多个视频,并且必须从服务器提供存储的m3u8段。

我看到两种选择

1)使用nginx Live进行流式传输 2)使用Nodejs或python应用程序将视频流式传输到客户端。

我对nginx和单独的应用程序服务器感到困惑。 Nginx还支持一些没有任何应用服务器的流媒体。 nginx可以用于为多个客户端流式传输多个存储的视频,还是仅用于实时流式传输?

Nginx教程:: https://docs.peer5.com/guides/setting-up-hls-live-streaming-server-using-nginx/

Nodejs app:用于提供存储的m3u8文件的HLS服务器https://github.com/RationalCoding/hls-server

我尝试了nodeApp及其工作正常,并希望使用nginx reverseproxy。但我发现使用nginx进行流式传输。那么对于我的应用程序,我应该使用节点应用程序流或nginx流?这个nginx一次动态地支持多个流吗?

任何有用的建议或文件。

2 个答案:

答案 0 :(得分:1)

如果它不是实时的,那么任何网络服务器都可以工作,因为它只是一堆小文件。您不需要任何特殊的流媒体支持。

视频点播的HLS可以从任何普通网络服务器提供。无论是nginx,Apache,IIS还是一些自制的节点服务器。

答案 1 :(得分:0)

是的,我们可以使用任何HTTP服务器来提供静态文件。如果要编写一些逻辑,则必须使用应用程序服务器。 NGINX服务器配置用于静态HLS服务。

server {
    listen       8001;
    server_name  localhost;

    location /gcf-media {
        # Disable cache
        add_header 'Cache-Control' 'no-cache';

        # CORS setup
        add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Expose-Headers' 'Content-Length';

        # allow CORS preflight requests
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            add_header 'Content-Length' 0;
            return 204;
        }

        types {
            application/dash+xml mpd;
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }

        root /Users/tarun/Desktop/labVideo;
    }

现在试试 在VLC或任何客户端应用程序中的localhost:8081 / gcf-media / 1 / 1.m3u8