2017-02-26 1 views
0

J'utilise Nginx pour publier un flux en direct sur une page Web - il publie HLS et revient à Flash. Fonctionne très bien sur Desktop/Laptop - Android est un sac mélangé. Certains spectateurs (y compris moi) peuvent voir et entendre le flux bien - d'autres juste obtenir un écran noir, ou le "rouet".Nginx - Video.js - Flux en direct visible sur certains appareils Android

erreur Nginx log:

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" 

fragments de HLS sont générés dans le dossier HLS sur le serveur. Le fichier Crossdomain.xml se trouve dans tous les emplacements pertinents. CORS est activé (je pense).

Serveur CentOS7 VPS, Apache 2.4.25, Nginx 1.9.15 (Construit par gcc 4.8.5 20150623, Construit avec OpenSSL 1.0.1e-fips 11 Feb 2013), Module Nginx RTMP installé, Video.js pour le visionnage (J'ai essayé d'installer le plugin HLSJS mais cela n'a pas aidé).

code HTML Pertinent à partir du site:

<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> 

fichier de configuration Nginx:

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

Questions:

  1. Pourrait-il être un problème CORS? J'ai demandé à quelqu'un d'autre de compiler Nginx et les modules pour moi (noob). Je lui ai mentionné que je n'ai pas vu CORS dans le fichier Config, mais il m'a dit qu'il avait CORS activé à la racine de Nginx, et il a dit que si CORS n'était pas activé, le flux ne fonctionnerait pour personne. J'ai essayé de mettre CORS dans le fichier de configuration de toute façon, mais cela n'a pas fait de différence. J'ai essayé en utilisant le code de 2 places: https://enable-cors.org/server_nginx.html https://gist.github.com/Stanback/7145487

  2. Suis-je à la recherche d'un périphérique/OS question spécifique? J'ai effectué un test w/6 téléspectateurs aujourd'hui. 3 pourrait voir le flux, 3 ne pouvait pas. 2 des personnes qui ne pouvaient pas utiliser Android 6 sur les téléphones LG - donc je pensais que c'est peut-être spécifique à Android 6 ou LG - mais j'avais une autre personne sur Android 6 qui a dit que le flux fonctionnait bien sur leur téléphone.

  3. Est-ce une limitation de Video.js en termes de compatibilité avec le navigateur ou le système d'exploitation mobile?

+0

De plus, je suis le protocole HTTPS est via htaccess – djkfunk

+0

Vraiment? Pas une réponse? – djkfunk

Répondre

0

Dans le bloc RTMP, je ne vois pas "HLS" l'application, il vous manque, il

S'il vous plaît utiliser

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; 
     } 
    } 
} 

Merci et BestRegards