2010-04-20 2 views
16

Мне нужно создать рамки плаката из видео, размещенных на Amazon S3, через ffmpeg.Как читать удаленное видео на Amazon S3 с помощью ffmpeg

Так есть ли способ использовать удаленный файл видео непосредственно в FFmpeg командной строки следующим образом:
ffmpeg -i "http://bucket.s3.amazonaws.com/video.mp4" -ss 00:00:10 -vframes 1 -f image2 "image%03d.jpg"

FFmpeg просто возвращает:
http://bucket.s3.amazonaws.com/video.mp4: I/O error occurred
Usually that means that input file is truncated and/or corrupted.

Я также попытался заставляя FFmpeg использовать видео mp4 для чтения:
ffmpeg -f mp4 -i "http://bucket.s3.amazonaws.com/video.mp4" ...
Но не повезло.

Заблокировать это видео с S3 и обработать его локально нормально работает, конечно,
, а также удаленно считывать файл с других «стандартных» http-серверов.
Итак, я знаю, что ffmpeg поддерживает удаленное чтение файлов, но почему бы не на S3?

ответ

24

Nevermind, я нашел простой способ решить мою проблему.

Я установил дистрибутив загрузки амазонных облаков, указывающий на мой ведро S3.
Via CloudFront файлы доступны с FFmpeg через HTTP:

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

И передача данных еще дешевле! Но все еще интересно, почему это не будет работать с S3 напрямую ...

+0

У меня была та же проблема, вытаскивание из ведра напрямую не работает. Он также не работал, вытягивая видео через CDN Limelight. Работал только через облачный интерфейс. Очень странно .. – bskinnersf

+0

Работает для меня, когда я добавляю политику ведра –

+2

Я думаю, что это может помочь сначала указать значение '-ss', re: http://stackoverflow.com/questions/18534835/fastest-way-to-extract -a-specific-frame-from-a-video-php-ffmpeg-anything – weisjohn

6

В моем случае чтение непосредственно формы S3 ведро работает как шарм. Чтобы быть более конкретным, мой объект S3 имеет личное разрешение, поэтому я передаю подписанный URL-адрес в ffmpeg.

Я использую ruby ​​и AWSRubySDK для создания подписанного URL-адреса. http://docs.amazonwebservices.com/AWSRubySDK/latest/AWS/S3/S3Object.html#url_for-instance_method

Проверьте разрешение вашего объекта S3.

+0

Какая конкретная команда использовалась с ffmpeg для подписанных URL-адресов? Я получаю неправильную ошибку запроса. Также он отлично работает для обычных URL-адресов. –