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?
Après avoir remplacé les variables avec l'identification de flux réel, ce que votre commande ffmpeg travail de la ligne de commande ? –
c'est le vrai id, mon nginx.conf est exactement comme ceci. il ne crée aucune sortie. @GergelyLukacsy – evan
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. –