2010-04-20 3 views
16

Ich muss Poster Frames von Videos auf Amazon S3 über ffmpeg gehostet erstellen.So lesen Sie Remote-Video auf Amazon S3 mit ffmpeg

So ist es eine Möglichkeit, die Remote-Video-Datei direkt in ffmpeg Befehlszeile wie folgt zu verwenden:
ffmpeg -i "http://bucket.s3.amazonaws.com/video.mp4" -ss 00:00:10 -vframes 1 -f image2 "image%03d.jpg"

ffmpeg gerade zurück:
http://bucket.s3.amazonaws.com/video.mp4: I/O error occurred
Usually that means that input file is truncated and/or corrupted.

Ich habe auch versucht ffmpeg zwingt die Videos zu verwenden, mp4 Container zum Lesen:
ffmpeg -f mp4 -i "http://bucket.s3.amazonaws.com/video.mp4" ...
Aber kein Glück.

Wget dieses Video von S3 und Verarbeitung es lokal funktioniert gut,
sowie das Lesen der Datei aus der Ferne von anderen "Standard" http-Servern.
Also ich weiß, dass ffmpeg Remote-Datei lesen unterstützt, aber warum nicht auf S3?

Antwort

24

Nevermind, ich fand einen einfachen Weg, um mein Problem zu lösen.

Ich habe eine Amazon Cloudfront Download-Distribution eingerichtet, die auf meinen S3-Bucket zeigt.
Via Cloudfront sind die Dateien zugänglich mit ffmpeg über http:

ffmpeg -i "http://subdomain.cloudfront.net/video.mp4" -ss 00:00:10 -vframes 1 -f image2 "image%03d.jpg"

und die Datenübertragung ist noch günstiger! Aber immer noch wundern, warum dies nicht mit S3 direkt funktioniert ...

+0

Ich hatte das gleiche Problem, Ziehen aus dem Eimer direkt funktioniert nicht. Es hat auch nicht funktioniert, das Video durch Limelights CDN zu ziehen. Funktionierte nur über Cloudfront. Sehr seltsam .. – bskinnersf

+0

Funktioniert für mich, wenn ich Bucket-Richtlinie hinzufügen –

+2

Ich denke, es kann helfen, den Wert "-ss" zuerst, re: http://stackoverflow.com/questions/18534835/fastest-way-to-extract -a-specific-frame-from-a-video-php-ffmpeg-irgendetwas – weisjohn

6

In meinem Fall, direkt lesen Form S3 Eimer arbeiten wie ein Charme. Um genauer zu sein, hat mein S3-Objekt private Erlaubnis, also übergebe ich eine Signed-URL an ffmpeg.

Ich verwende Ruby und AWSRubySDK, um eine Signed-URL zu generieren. http://docs.amazonwebservices.com/AWSRubySDK/latest/AWS/S3/S3Object.html#url_for-instance_method

Überprüfen Sie die Berechtigung Ihres S3-Objekts.

+0

Welchen spezifischen Befehl haben Sie mit ffmpeg für signierte URLs verwendet? Ich erhalte einen fehlerhaften Anforderungsfehler. Auch für normale URLs funktioniert es einwandfrei. –