2017-02-22 14 views
0

Я использую модули nginx и rtmp для потоковой передачи в реальном времени hls и mpeg-dash. вот моя команда RTMP в Nginx .confКоманда ffmpeg exec не работает в 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; 
    } 
} 
} 

но это не играет. кажется, что команда ffmpeg даже не работает. и папки hls и dash пусты. Может ли кто-нибудь помочь мне с этим?

+0

После замены переменных с фактическим StreamID, делает командную работу FFmpeg из командной строки ? –

+0

это настоящий id, мой nginx.conf точно такой. он не создает никакого вывода. @GergelyLukacsy – evan

+0

№. Идентификатор потока подставляется в переменной '$ name'. Когда вы открываете поток, URL-адрес выглядит так: 'rtmp: //server.com: 1935/mypull/12345', где' 12345' - ваш идентификатор потока. Я думаю, что вы можете заменить что-либо в этом случае, поэтому попробуйте использовать эту консоль: 'ffmpeg -re -i rtmp: // localhost: 1936/mypull/123 -vcodec libx264 -acodec libmp3lame -f flv rtmp: // localhost: 1936/hls/123' Также убедитесь, что порт открыт в настройках брандмауэра. Почему вы используете 1936 для RTMP? Значение по умолчанию - 1935. –

ответ

0

Поместите команду ffmpeg в сценарий bash. Например, мой Баш скрипт называется ff.sh, и хранится в папке/файлы

Поместите всю команду FFmpeg в сценарии, и сделать его исполняемым:

chmod +x /files/ff.sh 

exec_push сценарий в Nginx. conf

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

Возможно, это работает для вас.

0

Редактировать файл nginx.conf и положить в первой строке:

user root; 

Это будет запускать команду, как корень

Смежные вопросы