Ich muss in der Lage sein, ein Video mit ffmpeg zu lesen und seine Frames in JPG-Bilder zu extrahieren. Ich benutze diesen Befehl:
./ffmpeg -y -r 25 -probesize 100M -analyzeduration 100M -i http://webserver/video.mp4 -q:v 5 /destination/image_%03d.jpg
Es funktioniert einwandfrei, wenn das Video auf dem Gerät oder einem Amazon AWS-Server gespeichert ist, nicht jedoch, wenn es auf einem Windows Azure-Server gespeichert ist. Wenn das Video in webm kodiert ist, funktioniert es überall, aber ich muss es aus bestimmten Gründen in mp4 haben.
Hier ist die Ausgabe von 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!
Irgendeine Idee, was los ist? Könnte der Azure-Server etwas kaputt machen? Die Datei ist nicht beschädigt. Wenn ich sie herunterlade und lokal wiedergebe, funktioniert sie.
curl
oderwget
oder was auch immer herunterladen und dann die lokale Kopie als Eingabe verwenden?Antworten:
Sind Sie absolut sicher, dass die Dateien in Azure und AWS genau gleich sind? Wie in "Die Prüfsummen stimmen überein"? Die Tatsache, dass Webm-Versionen einwandfrei funktionieren, lässt mich vermuten, dass der Index der in Azure gespeicherten Datei am Ende der Datei gespeichert ist, während Sie die Datei streamen und andere Vorgänge ausführen müssen, bevor Sie den Download abschließen der Anfang.
Möglicherweise stimmt etwas anderes mit der Azure-Eingabedatei nicht, ist sie möglicherweise beschädigt? Es gibt auch diese Stackoverflow-Antwort , die eine Einstellung
-probesize
auf 100 und 10 M-analyzeduration
(von denen Sie anscheinend Letzteres haben) empfiehlt .quelle