Eu tenho uma máquina virtual rodando o CentOS 5.5 que eu uso como servidor de streaming.
Se eu abrir 4 terminais e fizer isso:
terminal 1:
# mkfifo pipe1.avi
# mkfifo pipe2.avi
# ffserver &
# ffmpeg -probesize 164000 -i pipe1.avi -async 1 -r 25 http://localhost:8090/feed1.ffm
terminal 2:
# ffmpeg -i pipe2.avi -async 1 -r 25 -vcodec flv -f flv somename.flv
terminal 3:
# mplayer -dumpstream rtp://someIp:somePort -dumpfile pipe1.avi
terminal 4:
# mplayer -dumpstream rtp://someIp:somePort -dumpfile pipe2.avi
Tudo está funcionando muito bem. Não há problemas em nenhum lugar.
Agora estou tentando criar um script e executá-lo em um cron. Este é o script:
ffserver &
ffmpeg -probesize 164000 -i pipe1.avi -async 1 -r 25 http://localhost:8090/feed1.ffm &
ffmpeg -i pipe2.avi -async 1 -r 25 -vcodec flv -f flv somename.flv &
mplayer -dumpstream rtp://someIp:somePort -dumpfile pipe1.avi &
mplayer -dumpstream rtp://someIp:somePort -dumpfile pipe2.avi &
exit 0
A linha crontab é:
10 * * * * script.sh > /dev/null 1>&2
O problema é que, quando o cron é executado, o sistema trava. Na verdade, ele não trava o fluxo, o que eu vejo em outro computador e está funcionando perfeitamente. Mas não posso fazer nada na máquina. A tela fica preta e não posso fazer nada, exceto reiniciá-la. Eu tenho um script que mata os processos anteriores. Se eu usá-lo, o fluxo é interrompido, mas eu ainda não recupero o acesso ao sistema (a mesma tela preta que eu faço).