开发者

How to read remote video on Amazon S3 using ffmpeg

I need to create poster frames from videos hosted on Amazon S3 via ffmpeg.

So is there a way to use the remote video file directly in ffmpeg command line like this:

ffmpeg -i "http://bucket.s3.amazonaws.com/video.mp4" -ss 00:00:10 -vframes 1 -f image2 开发者_运维百科"image%03d.jpg"

ffmpeg just returns:

http://bucket.s3.amazonaws.com/video.mp4: I/O error occurred

Usually that means that input file is truncated and/or corrupted.

I also tried forcing ffmpeg to use the videos mp4 container for reading:

ffmpeg -f mp4 -i "http://bucket.s3.amazonaws.com/video.mp4" ...

But no luck.

Wget this video from S3 and processing it locally works fine of course,

as well as reading the file remotely from other 'standard' http servers.

So I know that ffmpeg supports remote file reading, but why not on S3?


Nevermind, I found an easy way to solve my problem.

I set up an amazon cloudfront download distribution pointing to my S3 bucket.
Via cloudfront the files are accessible with ffmpeg over http:

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

And the data transfer is even cheaper! But still wondering why this won't work with S3 directly...


For everyone who came here looking how to do this with S3 only, The AWS SDK can now generate presigned urls.

ffprobe -i "$(aws s3 presign s3://MY_BUCKET/MY_FILE --expires 5)"


In my case, reading directly form S3 bucket work like a charm. To be more specific, my S3 object has private permission so I'm passing a Signed-URL to ffmpeg.

I use ruby and AWSRubySDK to generate a Signed-URL. http://docs.amazonwebservices.com/AWSRubySDK/latest/AWS/S3/S3Object.html#url_for-instance_method

Check your S3 object's permission.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜