2017-02-22 3 views
0

J'utilise nginx et le module rtmp pour diffuser en direct hls et mpeg-dash. ici est ma commande RTMP dans nginx .confLa commande exec ffmpeg ne fonctionne pas dans nginx rtmp

rtmp { 
server { 
    listen 1936; 


    application mypull { 
    live on ; 
    meta copy; 
    allow play all; 

    pull rtmp://184.72.239.149/vod/BigBuckBunny_115k.mov name=test live=1; 


    exec_push /usr/bin/ffmpeg -re -i rtmp://localhost:1936/mypull/$name -vcodec libx264 -acodec libmp3lame -f flv rtmp://localhost:1936/hls/$name; 


} 


application dash { 
     live on; 
     dash on; 
     dash_path /tmp/dash; 
     dash_nested on; 
     dash_fragment 5s; 
     dash_playlist_length 30s; 
    } 
    application hls { 
     live on; 
     hls on; 
    hls_playlist_length 30s; 
    hls_fragment 5s; 
     hls_path /tmp/hls; 
    } 
} 
} 

mais il ne joue pas. il semble que la commande ffmpeg ne fonctionne même pas. et les dossiers hls et dash sont vides. quelqu'un pourrait-il m'aider avec?

+0

Après avoir remplacé les variables avec l'identification de flux réel, ce que votre commande ffmpeg travail de la ligne de commande ? –

+0

c'est le vrai id, mon nginx.conf est exactement comme ceci. il ne crée aucune sortie. @GergelyLukacsy – evan

+0

Non. L'identifiant du flux est remplacé par la variable '$ name'. Lorsque vous ouvrez le flux, l'URL ressemble à ceci: 'rtmp: //server.com: 1935/mypull/12345' où' 12345' est votre identifiant de flux. Je pense que vous pouvez remplacer n'importe quoi dans ce cas, alors voici votre console: 'ffmpeg -re -i rtmp: // localhost: 1936/mypull/123 -vcodec libx264 -acodec libmp3lame -f flv rtmp: // localhost: 1936/hls/123' Assurez-vous également que le port est ouvert dans les paramètres de votre pare-feu. Pourquoi utilisez-vous 1936 pour RTMP? La valeur par défaut est 1935. –

Répondre

0

Mettez la commande ffmpeg dans un script bash. Par exemple, mon script bash est nommé ff.sh, et est stocké dans le dossier/fichiers

Mettez toute commande ffmpeg dans le script, et le rendre exécutable:

chmod +x /files/ff.sh 

exec_push le script dans nginx. conf

application origin { 
live on; 
exec_push /files/ff.sh; 
} 

Vous pourriez trouver que cela fonctionne pour vous.

0

Modifier votre fichier nginx.conf et mis en première ligne:

user root; 

Cela exécutera votre commande en tant que root