2010-04-20 62 views
16

我需要通過ffmpeg從Amazon S3上託管的視頻創建海報幀。如何使用ffmpeg閱讀Amazon S3上的遠程視頻

那麼,有沒有直接的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" ...
但是沒有運氣。

Wget從S3的視頻和本地處理它當然工作,
以及從其他'標準'http服務器遠程讀取文件。
所以我知道ffmpeg支持遠程文件讀取,但爲什麼不在S3上?

回答

24

沒關係,我發現了一個簡單的方法來解決我的問題。

我設置了一個指向我的S3存儲桶的亞馬遜cloudfront下載分佈。
通過CloudFront的文件與ffmpeg的訪問通過http:

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

和數據傳輸的更便宜! 但仍然想知道爲什麼這不會與S3直接工作...

+0

我有同樣的問題,直接從桶中拉出不起作用。它也無法通過Limelight的CDN拉動視頻。只能通過cloudfront工作。很奇怪.. – bskinnersf 2010-05-14 00:23:43

+0

適用於我當我添加桶政策 – 2014-02-13 14:06:35

+2

我認爲這可能有助於指定'-ss'值首先,回覆:http://stackoverflow.com/questions/18534835/fastest-way-to-extract -a-specific-frame-from-a-video-php-ffmpeg-anything – weisjohn 2014-05-09 15:11:54

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。 – 2017-09-18 09:21:36