2017-06-20 5 views
-1

J'ai installé nginx avec le module RTMP sur mon serveur Linux où je veux recevoir un flux RTMP de Open Broadcaster Software, le convertir en HLS et le lire sur mon site privé avec un lecteur HTML5. La réception du flux RTMP fonctionne, mais le flux HLS ne semble pas fonctionner. Ma config actuelle est comme ceci:Le flux HLS de nginx ne fonctionne pas

worker_processes 1; 

events { 
    worker_connections 1024; 
} 


http { 
    #include  mime.types; 
    #default_type application/octet-stream; 
    sendfile  off; 
    #keepalive_timeout 65; 

    server { 
     listen  8080; 
     #server_name localhost; 

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

     #error_page 404    /404.html; 

     # redirect server error pages to the static page /50x.html 
     #error_page 500 502 503 504 /50x.html; 
     #location = /50x.html { 
     # root html; 
     #} 

     #********************************************************************************************************************************* 
     location /hls { 
      types { 
       application/vnd.apple.mpegurl m3u8; 
     } 
      root /mnt/; 
      add_header Cache-Control no-cache; 

      # To avoid issues with cross-domain HTTP requests (e.g. during development) 
      #add_header Access-Control-Allow-Origin *; 
     } 
     #********************************************************************************************************************************* 

    } 

} 

rtmp { 
     server { 
       listen 1935; 
       chunk_size 4096; 

       application stream { 
         live on; 
         #record off; 

      hls on; 
      hls_path /mnt/hls; 
      #hls_fragment 6s; 
       } 
     } 
} 

pour recevoir le flux RTMP J'utilise rtmp://ip/stream/streamname qui fonctionne très bien, pour recevoir HLS j'essaie d'utiliser http://ip:8080/hls/streamname.m3u8 qui me donne le fichier .m3u8 si je tape dans un navigateur, mais ne semble pas fonctionner sur la page Web lorsque j'essaie de lire le fichier dans un lecteur HTML5. Je suis en train de tester via ces pages: https://videojs.github.io/videojs-contrib-hls/ et https://demo.theoplayer.com/test-hls-mpeg-dash-stream

Quelqu'un peut-il m'aider à comprendre ce que je fais mal?

Répondre

0

Il serait utile que vous partagiez le type d'erreur de console ou de réseau que vous obtenez lors du test de votre flux HLS sur ces pages.

Il peut vous fournir des informations utiles pour le dépannage. Par exemple, il se peut que vous obteniez des erreurs Access Control Allow Origin en accédant à votre flux depuis un autre domaine. Essayez de décommenter cette ligne dans votre fichier nginx.conf et de recharger.

#add_header Access-Control-Allow-Origin *; 

J'ai aussi une référence à "video/mp2t ts;" dans mon bloc de localisation hls.

location /hls/ { 
    # Serve HLS fragments 
    types { 
     application/vnd.apple.mpegurl m3u8; 
     video/mp2t ts; 
    } 
    root /tmp; 
    add_header Cache-Control no-cache; 
    add_header 'Access-Control-Allow-Origin' '*'; 
} 

Cheers. Ian

+0

Comme j'ai testé avec ces joueurs, je n'ai pas eu de retour d'erreur définitif, mais cette solution fonctionne lorsque je teste le flux dans VLC. Une autre chose que j'ai remarquée était que ça fonctionnait seulement quand j'utilisais mon ip direct, et pas le nom de domaine quand je essayais de me connecter, donc je suppose qu'il y a une configuration bizarre qui a mal tourné (ou simplement bloquée par le fournisseur de nom de domaine). – Zamor