2017-02-26 1 views
0

Ich benutze Nginx, um einen Livestream auf einer Webseite zu veröffentlichen - es veröffentlicht HLS und fällt zurück auf Flash. Funktioniert super auf Desktop/Laptop - Android ist eine gemischte Tasche. Einige Zuschauer (einschließlich mir) können den Strom gut sehen und hören - andere bekommen nur einen schwarzen Bildschirm oder das "Spinnrad".Nginx - Video.js - Livestream sichtbar auf einigen Android-Geräten

Nginx Fehlerprotokoll:

2017/02/25 16:28:16 [error] 32054#0: *57 open() "/tmp/hls/test.m3u8" failed (2: No such file or directory), client: (my ip address), server: localhost, request: "GET /hls/test.m3u8 HTTP/1.1", host: "mydomain.com:8080" 

HLS-Fragmente auf dem Server in HLS Ordner erzeugt werden. Die Datei Crossdomain.xml befindet sich an allen relevanten Orten. CORS ist aktiviert (denke ich).

CentOS7 VPS-Server, Apache 2.4.25, 1.9.15 Nginx (Built von gcc 4.8.5 20.150.623, errichtet mit OpenSSL 1.0.1e-FIPS 11. Februar 2013), Nginx RTMP-Modul installiert ist, für den Strom Video.js Betrachtungs (Ich habe versucht, das HLSJS-Plugin zu installieren, aber es hat nicht geholfen).

Einschlägige HTML-Code von Website:

<head> 
<script src="video.js"></script> 
<script src="videojs-hlsjs.js"></script> 
<script> 
    videojs.options.flash.swf = "video-js.swf"; 
</script> 
</head> 

<body> 
<div class="jsvideo" align="center"> 
<video id="test-stream" class="video-js vjs-default-skin vjs-big-play-centered" width="auto" height="auto" controls preload="auto" poster="images/Funkazoid-Radio-1.jpg" data-setup='{"fluid":true,"aspectRatio":"16:9","controls": true, "autoplay": false, "preload": "auto", "techOrder": ["html5","flash"]}' > 
<source src="http://funkazoidradio.com:8080/hls/test.m3u8" type='application/x-mpegURL' /> 
<source src="rtmp://funkazoidradio.com:1935/live/test" type='rtmp/mp4' /> 
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p> 
</video> 
<script src="video.js"></script> 
<script src="videojs-hlsjs.js"></script> 
<script> 
    // fire up the plugin 
    videojs('video'); 
</script> 
</body> 

Nginx Konfigurationsdatei:

#user root; 
worker_processes 1; 

#error_log logs/error.log; 
#error_log logs/error.log notice; 
#error_log logs/error.log info; 

#pid  logs/nginx.pid; 

events { 
    worker_connections 1024; 
} 

http { 
    include  mime.types; 
    default_type application/octet-stream; 

    #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
    #     '$status $body_bytes_sent "$http_referer" ' 
    #     '"$http_user_agent" "$http_x_forwarded_for"'; 

    #access_log logs/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 

    #keepalive_timeout 0; 
    keepalive_timeout 65; 

    #gzip on; 

    server { 
     listen  8080; 
     server_name localhost; 

     #charset koi8-r; 

     #access_log logs/host.access.log main; 

     location/{ 
      root html; 
      index index.html index.htm; 
     } 

    location /hls { 
     types { 
      application/vnd.apple.mpegurl m3u8; 
      video/mp2t ts; 
     } 
     root /tmp; 
     add_header Cache-Control no-cache; 
    } 

    location /stat { 
     rtmp_stat all; 
     rtmp_stat_stylesheet stat.xsl; 
    } 

    location /stat.xsl { 
     root html; 
    }  

} 
rtmp { 
    server { 
     listen 1935; 
     chunk_size 4096; 
     application live { 
      live on; 
      record off; 
      hls on; 
      hls_path /tmp/hls; 
     } 
    } 
} 

Fragen:

  1. Könnte es ein CORS Problem sein? Ich hatte jemand anderes kompilieren Nginx und die Module für mich (noob). Ich erwähnte, dass ich CORS in der Config-Datei nicht sah, aber er sagte, er habe CORS im root von Nginx aktiviert, und er sagte, wenn CORS nicht aktiviert wäre, würde der Stream für niemanden funktionieren. Ich habe versucht, CORS in die Konfigurationsdatei zu setzen, aber das machte keinen Unterschied. Ich habe versucht mit dem Code von 2 Plätzen: https://enable-cors.org/server_nginx.html https://gist.github.com/Stanback/7145487

  2. Bin ich in einem Gerät/OS-spezifisches Problem suchen? Ich habe heute einen Test mit 6 Zuschauern durchgeführt. 3 konnte den Stream sehen, 3 nicht. 2 der Leute, die nicht konnten Android 6 auf LG-Handys laufen - so dachte ich, vielleicht ist es spezifisch für Android 6 oder LG - aber ich hatte eine andere Person auf Android 6, die den Stream funktionierte gut auf ihrem Handy.

  3. Ist es eine Einschränkung von Video.js hinsichtlich der Kompatibilität mit Browsern oder mobilen Betriebssystemen?

+0

Außerdem bin ich gezwungen https via htaccess – djkfunk

+0

Wirklich? Keine einzige Antwort? – djkfunk

Antwort

0

Im rtmp Block, sehe ich nicht "HLS" Anwendung werden Sie es bitte benutzen

fehlt

rtmp { 
    server { 
     application live { 
      live on; 
      record off; 

     } 

     application hls { 
      live on; 
      interleave on; 
      wait_key on; 
      hls on; 
      hls_path /tmp/hls; 
      hls_fragment 1; 
      hls_playlist_length 4; 
     } 
    } 
} 

Dank und BestRegards

Verwandte Themen