Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Túlio Henrique

PHP function exec() - Http Error 502.2 - Bad Gateway

Recommended Posts

Olá Pessoal

 

Desenvolvir um sistema que usa o FFmpeg pra converter os videos para .flv

 

PHP5 rodando como cgi no IIS7.

 

Uso a função exec() para rodar o ffmpeg.exe, o video e convertido mais assim que acaba de converte está retornando o seguinte erro:

 

HTTP Error 502.2 - Bad Gateway

The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are "FFmpeg version SVN-r15986, Copyright © 2000-2008 Fabrice Bellard, et al. configuration: --extra-cflags=-fno-common --enable-memalign-hack --enable-pthreads --enable-libmp3lame --enable-libxvid --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libfaac --enable-libgsm --enable-libx264 --enable-libschroedinger --enable-avisynth --enable-swscale --enable-gpl libavutil 49.12. 0 / 49.12. 0 libavcodec 52. 6. 0 / 52. 6. 0 libavformat 52.23. 1 / 52.23. 1 libavdevice 52. 1. 0 / 52. 1. 0 libswscale 0. 6. 1 / 0. 6. 1 built on Dec 3 2008 01:59:37, gcc: 4.2.4 Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00 (25/1) Input #0, flv, from 'C:\Windows\Temp\php749B.tmp': Duration: 00:02:07.00, start: 0.000000, bitrate: 64 kb/s Stream #0.0: Video: flv, yuv420p, 320x180, 25.00 tb® Stream #0.1: Audio: mp3, 22050 Hz, mono, s16, 64 kb/s Output #0, flv, to 'D:/inetpub/vhosts/animespirit.net/httpdocs/uploads/videos/vide".

 

Pelo que entendi o exec() está retornando a saida do ffmpeg pro navegador e isso da dando erro

 

Ja tentei rodar o PHP em ISAPI mais ai não converte o video, não da erro, não executa o exec() e nem chama o ffmpeg.exe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal

 

Desenvolvir um sistema que usa o FFmpeg pra converter os videos para .flv

 

PHP5 rodando como cgi no IIS7.

 

Uso a função exec() para rodar o ffmpeg.exe, o video e convertido mais assim que acaba de converte está retornando o seguinte erro:

 

HTTP Error 502.2 - Bad Gateway

The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are "FFmpeg version SVN-r15986, Copyright © 2000-2008 Fabrice Bellard, et al. configuration: --extra-cflags=-fno-common --enable-memalign-hack --enable-pthreads --enable-libmp3lame --enable-libxvid --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libfaac --enable-libgsm --enable-libx264 --enable-libschroedinger --enable-avisynth --enable-swscale --enable-gpl libavutil 49.12. 0 / 49.12. 0 libavcodec 52. 6. 0 / 52. 6. 0 libavformat 52.23. 1 / 52.23. 1 libavdevice 52. 1. 0 / 52. 1. 0 libswscale 0. 6. 1 / 0. 6. 1 built on Dec 3 2008 01:59:37, gcc: 4.2.4 Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00 (25/1) Input #0, flv, from 'C:\Windows\Temp\php749B.tmp': Duration: 00:02:07.00, start: 0.000000, bitrate: 64 kb/s Stream #0.0: Video: flv, yuv420p, 320x180, 25.00 tb® Stream #0.1: Audio: mp3, 22050 Hz, mono, s16, 64 kb/s Output #0, flv, to 'D:/inetpub/vhosts/animespirit.net/httpdocs/uploads/videos/vide".

 

Pelo que entendi o exec() está retornando a saida do ffmpeg pro navegador e isso da dando erro

 

Ja tentei rodar o PHP em ISAPI mais ai não converte o video, não da erro, não executa o exec() e nem chama o ffmpeg.exe

 

Ao inves de usar o exec tenta usar o shell_exec que retorna toda a saida da sua execução numa string. dai com expressões regulares ou outra tecnica que voce achar viavel você pode tratar essa string pra descobrir se correu tudo bem ou não.

 

veja aqui: http://br2.php.net/manual/en/function.shell-exec.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal

 

Desenvolvir um sistema que usa o FFmpeg pra converter os videos para .flv

 

PHP5 rodando como cgi no IIS7.

 

Uso a função exec() para rodar o ffmpeg.exe, o video e convertido mais assim que acaba de converte está retornando o seguinte erro:

 

HTTP Error 502.2 - Bad Gateway

The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are "FFmpeg version SVN-r15986, Copyright © 2000-2008 Fabrice Bellard, et al. configuration: --extra-cflags=-fno-common --enable-memalign-hack --enable-pthreads --enable-libmp3lame --enable-libxvid --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libfaac --enable-libgsm --enable-libx264 --enable-libschroedinger --enable-avisynth --enable-swscale --enable-gpl libavutil 49.12. 0 / 49.12. 0 libavcodec 52. 6. 0 / 52. 6. 0 libavformat 52.23. 1 / 52.23. 1 libavdevice 52. 1. 0 / 52. 1. 0 libswscale 0. 6. 1 / 0. 6. 1 built on Dec 3 2008 01:59:37, gcc: 4.2.4 Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00 (25/1) Input #0, flv, from 'C:\Windows\Temp\php749B.tmp': Duration: 00:02:07.00, start: 0.000000, bitrate: 64 kb/s Stream #0.0: Video: flv, yuv420p, 320x180, 25.00 tb® Stream #0.1: Audio: mp3, 22050 Hz, mono, s16, 64 kb/s Output #0, flv, to 'D:/inetpub/vhosts/animespirit.net/httpdocs/uploads/videos/vide".

 

Pelo que entendi o exec() está retornando a saida do ffmpeg pro navegador e isso da dando erro

 

Ja tentei rodar o PHP em ISAPI mais ai não converte o video, não da erro, não executa o exec() e nem chama o ffmpeg.exe

 

Ao inves de usar o exec tenta usar o shell_exec que retorna toda a saida da sua execução numa string. dai com expressões regulares ou outra tecnica que voce achar viavel você pode tratar essa string pra descobrir se correu tudo bem ou não.

 

veja aqui: http://br2.php.net/manual/en/function.shell-exec.php

 

ja tentei usar shell_exec(), system(), passthru() todas elas fazem a conversão (no modo cgi do php) mais dão esse erro de gatway quando termina a execução

Compartilhar este post


Link para o post
Compartilhar em outros sites

já trabalhou com php anteriormente ?

 

há algum motivo específico para trabalhar com php em modo cgi ?

pois não é recomendado usar o modo cgi há mais de 5 anos..

Compartilhar este post


Link para o post
Compartilhar em outros sites

já trabalhou com php anteriormente ?

 

há algum motivo específico para trabalhar com php em modo cgi ?

pois não é recomendado usar o modo cgi há mais de 5 anos..

sim trabalho com php a 7 anos sei q o cgi naum e recomendavel o outro jeito que o IIS7 suporta e o modo ISAPI mais como ja disse no primeiro post no modo ISAPI nem chama a função exec() nem outras simplesmente pula essa parte do codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

gcc: 4.2.4 Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00

gcc: 4.2.4 Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00

parece ser relationado ao codec de video.

verifique se possui o codecs instalados..

 

 

ps: o video é convertido se executar diretamente pelo ms-dos ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

gcc: 4.2.4 Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00

gcc: 4.2.4 Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00

parece ser relationado ao codec de video.

verifique se possui o codes instalados..

 

 

ps: o video é convertido se executar diretamente pelo ms-dos ?

 

 

como disse no primeiro post o video e convertido e roda perfeito sem problema acontece q apos terminar a conversão o exec manda o buffer (saida do ffmpeg) pro php ai da pau

Compartilhar este post


Link para o post
Compartilhar em outros sites

public function convertVideo($source, $destino) {

exec("D:/inetpub/vhosts/animespirit.net/httpdocs/ffmpeg/ffmpeg.exe -i \"$source\" -vcodec flv -f flv -r 29.97 -s 320x240 -aspect 4:3 -b 300kb -g 160 -cmp dct -subcmp dct -mbd 2 -flags +aic+cbp+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -ab 56k \"$destino\" > NUL");

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça isso

 

public function convertVideo($source, $destino) {
	@exec("D:/inetpub/vhosts/animespirit.net/httpdocs/ffmpeg/ffmpeg.exe -i \"$source\" -vcodec flv -f flv -r 29.97 -s 320x240 -aspect 4:3 -b 300kb -g 160 -cmp dct -subcmp dct -mbd 2 -flags +aic+cbp+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -ab 56k \"$destino\" > NUL");
}

veja o que retorna.

 

na verdade não é recomendável fazer isso, pois inibirá mensagens de erro

 

o erro continuará exisitindo.

 

 

veja a mensagem de erro provinda do ffmpeg:

gcc: 4.2.4 Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00

Aparentemente há um conflito na quantidade de frames por segundo.

 

Nos parâmetros da linha de comando você está especificando 29.97 FPS mas por algum motivo, o FFMEG está dizendo que há um erro referente a isso.

Pode ser um bug, ou talvez esteja errando em algum ponto..

 

 

Perguntei acima se executou essa linha de comando no prompt do MS-DOS

Execute e veja se retorna algum erro, apenas pra ver se o erro é relacionado com o PHP ou não. Por aí já elimina uma série de dúvidas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça isso

 

public function convertVideo($source, $destino) {
	@exec("D:/inetpub/vhosts/animespirit.net/httpdocs/ffmpeg/ffmpeg.exe -i \"$source\" -vcodec flv -f flv -r 29.97 -s 320x240 -aspect 4:3 -b 300kb -g 160 -cmp dct -subcmp dct -mbd 2 -flags +aic+cbp+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -ab 56k \"$destino\" > NUL");
}

veja o que retorna.

 

na verdade não é recomendável fazer isso, pois inibirá mensagens de erro

 

o erro continuará exisitindo.

 

 

veja a mensagem de erro provinda do ffmpeg:

gcc: 4.2.4 Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00

Aparentemente há um conflito na quantidade de frames por segundo.

 

Nos parâmetros da linha de comando você está especificando 29.97 FPS mas por algum motivo, o FFMEG está dizendo que há um erro referente a isso.

Pode ser um bug, ou talvez esteja errando em algum ponto..

 

 

Perguntei acima se executou essa linha de comando no prompt do MS-DOS

Execute e veja se retorna algum erro, apenas pra ver se o erro é relacionado com o PHP ou não. Por aí já elimina uma série de dúvidas.

 

ffmpeg rodando no dos

Imagem Postada

 

sobre o @ ja tentei botar antes da na mesma

 

tbem tirei o -r la e não mudou nda

Compartilhar este post


Link para o post
Compartilhar em outros sites

consulte a documentação do ffmpeg

 

verifique também se o video tem mesmo 27 FPS

 

pois no erro diz que algo sobre 25.0 FPS

 

verificiou também se possui os codecs adequados para manipular videos com ffmpeg ?

 

jogue a mensagem de erro no google que verá diversos usuários com problema semelhante

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.