ffmpeg: não é possível ler o arquivo do servidor do Azure (funciona localmente e a partir do AWS)

0

Eu preciso ler um vídeo com o ffmpeg e extrair seus quadros para imagens JPG. Estou usando este comando:

./ffmpeg -y -r 25 -probesize 100M -analyzeduration 100M -i http://webserver/video.mp4 -q:v 5 /destination/image_%03d.jpg

Funciona bem se o vídeo estiver armazenado no dispositivo ou em um servidor Amazon AWS, mas isso não acontece se estiver armazenado em um servidor do Windows Azure. Se o vídeo é codificado em webm, ele funciona em todos os lugares, mas eu preciso que ele esteja no mp4 por alguns motivos.

Aqui está a saída do ffmpeg:

[mov,mp4,m4a,3gp,3g2,mj2 @ 0xf70d7000] stream 0, offset 0x30: partial file
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xf70d7000] Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none, 960x540, 1236 kb/s): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
http://server/video.mp4: could not find codec parameters
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'http://server/video.mp4':
Metadata:
major_brand     : isom
minor_version   : 512
compatible_brands: isomiso2avc1mp41
encoder         : Lavf56.40.101
Duration: 00:00:01.44, bitrate: 1241 kb/s
Stream #0:0(und): Video: h264 (avc1 / 0x31637661), none, 960x540, 1236 kb/s, 25 fps, 25 tbr, 12800 tbn, 25600 tbc (default)
Metadata:
handler_name    : VideoHandler
[buffer @ 0xf703a000] Unable to parse option value "-1" as pixel format
Last message repeated 1 times
[buffer @ 0xf703a000] Error setting option pix_fmt to value -1.
[graph 0 input from stream 0:0 @ 0xf70dd190] Error applying options to the filter.
Error opening filters!

Alguma idéia do que está errado? O servidor do Azure pode quebrar alguma coisa? O arquivo não está corrompido, se eu baixá-lo e reproduzi-lo localmente, funciona.

    
por Tim Autin 30.03.2017 / 06:49

1 resposta

0

Tem certeza absoluta de que os arquivos no Azure e na AWS são exatamente os mesmos? Como em "o checksums match" mesmo? Como o fato de as versões webm funcionarem bem me faz pensar que o arquivo armazenado no Azure tem seu índice armazenado no final do arquivo, enquanto que para fazer streaming e executar outras operações no arquivo antes de concluir o download, é necessário que ele esteja em o começo.

Pode haver algo errado com o arquivo de entrada do Azure, talvez esteja corrompido? Também há esta resposta do Stackoverflow que recomenda definir -probesize a 100 e -analyzeduration a 10M (o último dos quais você parece ter).

    
por 30.03.2017 / 11:01