代码之家  ›  专栏  ›  技术社区  ›  virtualize

如何使用ffmpeg读取amazons3上的远程视频

  •  20
  • virtualize  · 技术社区  · 15 年前

    那么,有没有一种方法可以直接在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服务器远程读取文件。

    3 回复  |  直到 15 年前
        1
  •  40
  •   buræquete Naveen Kocherla    5 年前

    不管怎样,我找到了一个简单的方法来解决我的问题。


    通过cloudfront,可以通过ffmpeg over http访问文件:

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

    而且数据传输更便宜! 但是仍然想知道为什么这不能直接与S3一起工作。。。

        2
  •  16
  •   Stefan    6 年前

    对于来这里研究如何只使用S3的每个人来说,awssdk现在可以生成预先签名的url。

    ffprobe -i "$(aws s3 presign s3://MY_BUCKET/MY_FILE --expires 5)"
    
        3
  •  8
  •   coffee-grinder    7 年前

    在我的情况下,直接从S3中阅读就像一种魅力。 更具体地说,我的S3对象具有私有权限,所以我将一个签名的URL传递给ffmpeg。

    http://docs.amazonwebservices.com/AWSRubySDK/latest/AWS/S3/S3Object.html#url_for-instance_method

    检查S3对象的权限。