Amazon s3 如何使用ffmpeg在Amazon S3上读取远程视频

Amazon s3 如何使用ffmpeg在Amazon S3上读取远程视频,amazon-s3,ffmpeg,Amazon S3,Ffmpeg,我需要通过ffmpeg从AmazonS3上托管的视频创建海报框架 有没有一种方法可以直接在ffmpeg命令行中使用远程视频文件,如下所示: ffmpeg-i”http://bucket.s3.amazonaws.com/video.mp4“-ss 00:00:10-vframes 1-f image2”图像%03d.jpg“ ffmpeg仅返回: http://bucket.s3.amazonaws.com/video.mp4: 发生I/O错误 通常这意味着输入文件被截断和/或损坏。 我还尝试强

我需要通过ffmpeg从AmazonS3上托管的视频创建海报框架

有没有一种方法可以直接在ffmpeg命令行中使用远程视频文件,如下所示:
ffmpeg-i”http://bucket.s3.amazonaws.com/video.mp4“-ss 00:00:10-vframes 1-f image2”图像%03d.jpg“

ffmpeg仅返回:
http://bucket.s3.amazonaws.com/video.mp4: 发生I/O错误
通常这意味着输入文件被截断和/或损坏。

我还尝试强制ffmpeg使用视频mp4容器进行阅读:
ffmpeg-f mp4-i”http://bucket.s3.amazonaws.com/video.mp4“…

但是没有运气

从S3获取此视频并在本地进行处理当然可以,
以及从其他“标准”http服务器远程读取文件。

所以我知道ffmpeg支持远程文件读取,但为什么不在S3上呢?

不过,我找到了一个简单的方法来解决我的问题

我设置了一个amazon cloudfront下载分发版,指向我的S3存储桶。
通过cloudfront,可通过ffmpeg通过http访问文件:

ffmpeg -i "http://subdomain.cloudfront.net/video.mp4" -ss 00:00:10 -vframes 1 -f image2 "image%03d.jpg"
而且数据传输更便宜!
但是仍然想知道为什么这不能直接用于S3…

在我的例子中,直接从S3桶中读取数据就像一种魅力。 更具体地说,我的S3对象具有私有权限,因此我将向ffmpeg传递一个签名URL

我使用ruby和AWSRubySDK生成一个签名URL。


检查您的S3对象的权限。

对于来这里查看如何仅使用S3执行此操作的所有人,AWS SDK现在可以生成预先签名的URL

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

我也有同样的问题,直接从桶里掏出来是不行的。它也无法通过Limelight的CDN播放视频。仅通过cloudfront工作。非常奇怪..当我添加bucket policy时对我有效我认为它可能有助于首先指定
-ss
值,re:@LukaszMadon您添加了什么bucket policy?我们如何在aws lambda上访问ffmpeg?您在ffmpeg中对签名URL使用了什么特定命令?我收到错误的请求错误。另外,对于普通的URL来说,它工作得非常好。谢谢,这非常有用!指向.Net SDK页面预签名的当前链接为