amazon-web-servicesamazon-s3ffmpeg

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?


Solution

  • 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...