2010-04-20 8 views
16

Necesito crear portarretratos desde videos alojados en Amazon S3 a través de ffmpeg.Cómo leer video remoto en Amazon S3 usando ffmpeg

Entonces, ¿hay una manera de utilizar el archivo de vídeo a distancia directamente en la línea de comando ffmpeg como esto:
ffmpeg -i "http://bucket.s3.amazonaws.com/video.mp4" -ss 00:00:10 -vframes 1 -f image2 "image%03d.jpg"

ffmpeg sólo devuelve:
http://bucket.s3.amazonaws.com/video.mp4: I/O error occurred
Usually that means that input file is truncated and/or corrupted.

También probé forzando ffmpeg para utilizar los vídeos Contenedor mp4 para leer:
ffmpeg -f mp4 -i "http://bucket.s3.amazonaws.com/video.mp4" ...
Pero no hubo suerte.

Wget este video de S3 y procesarlo localmente funciona bien por supuesto,
, así como leer el archivo de forma remota desde otros servidores http 'estándar'.
Entonces sé que ffmpeg admite la lectura remota de archivos, pero ¿por qué no en S3?

Respuesta

24

No importa, encontré una manera fácil de resolver mi problema.

Configuré una distribución de descargas en la nube de Amazon que apuntaba a mi cubo S3.
Via CloudFront los archivos son accesibles con ffmpeg a través de http:

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

Y la transferencia de datos es aún más barato! Pero aún me pregunto por qué esto no funciona con S3 directamente ...

+0

Tuve el mismo problema, sacar el cubo directamente no funciona. Tampoco funcionó tirando el video a través del CDN de Limelight. Solo funcionó a través de la nube. Muy extraño .. – bskinnersf

+0

Funciona para mí cuando agrego la política de cubo –

+2

Creo que puede ser útil especificar el valor '-ss' primero, re: http://stackoverflow.com/questions/18534835/fastest-way-to-extract -a-specific-frame-from-a-video-php-ffmpeg-anything – weisjohn

6

En mi caso, leyendo directamente del cubo S3 funciona como un amuleto. Para ser más específico, mi objeto S3 tiene permiso privado, así que estoy pasando un URL firmado a ffmpeg.

Uso ruby ​​y AWSRubySDK para generar una URL firmada. http://docs.amazonwebservices.com/AWSRubySDK/latest/AWS/S3/S3Object.html#url_for-instance_method

Compruebe el permiso de su objeto S3.

+0

¿Qué comando específico usaste con ffmpeg para URLs firmadas? Recibo un error de solicitud erróneo. También funciona perfectamente bien para las urls normales. –