HLS-поток nginx в домен - не виден на устройствах вне локальной сети - проигрыватель videojs - PullRequest
0 голосов
/ 12 ноября 2019

Итак, у меня есть бесплатный домен, и я настроил его так, чтобы на моем маршрутизаторе перенаправлялись точки записи на мой внешний ip, порты 80, 1935 и 8080. OBS передает потоки в домен правильно, и поток можно увидеть на VLC, но его нельзя увидеть ни на моем блогере (в локальной сети), ни публично. Я также изменил файл хостов Windows, поместив имя домена и локальный ip (мой компьютер)

. Я могу только смотреть поток, используя VLC, то есть, используя следующую «формулу» -> rtmp // mydomain.xx/ app / streamkey

Хотя я вижу это в vlc, он больше нигде не работает. Вот мой файл nginx.conf

#user  nobody;
# multiple workers works !
worker_processes  auto;

#pid        logs/nginx.pid;

events {
    worker_connections  8192;
}

rtmp {
    server {
        listen 1935;
        allow play all;
        chunk_size 4000;

        application live {
            live on;
            allow publish all;
            allow play all;
			
            #enable HLS
            hls on;
            hls_path "my path";	
            hls_fragment 3;
            hls_playlist_length 60;
        }
		
    }
}


http {
    # Disable server tokens
    server_tokens off;

    # Include MIME types
    include mime.types;

    # Set timeout limit
    keepalive_timeout 65;

    server {
        listen 80;      # HTTP IPv4
        listen [::]:80; # HTTP IPv6
        server_name mydomain.xx www.mydomain.xx; # Your domain (RECOMMENDED BUT OPTIONAL)
        
        location / {
            # Disable cache
            add_header Cache-Control no-cache;

            # Enable CORS
            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;
            }

            # Specify file type to be served (.m3u8)
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t;
            }

            # File location
            # Set to the same hls_path specified in the rtmp application
            root "my path";
        }
    }
}

и это файл index.html, который я использую для его проверки

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Player - Live 🔴</title>

    <link href="https://vjs.zencdn.net/7.5.4/video-js.css" rel="stylesheet">
    <script src='https://vjs.zencdn.net/7.5.4/video.js'></script>
</head>
<body>
    <video id="player" class="video-js vjs-default-skin" width="800" height="440"  controls preload="none">
        <source src="http://mydomain.xx/app/streamkey.m3u8" type="application/x-mpegURL" />
    </video>  
    <script>
        var player = videojs('#player')
    </script>
</body>
</html>

Плеер загружается бесконечно, но никогда не показывает ни одного кадра ... я уверен, что мне здесь не хватает некоторых вещей, но я могу ошибаться (только новичок, смеется)

...