2013-03-20 54 views
3

我們有這種配置工作的視頻文件的視頻分辨率:獲取使用亞馬遜的彈性轉碼器

1- Display a JS Upload Form to the visitor 
2- Upload file chosen direclty to Amazon S3 
3- Transcode the Video in MP4 using Amazon Elastic Transcoder with options: 
     * resolution: auto 
     * thumbnails: on, every 2sec 

,一切工作正常。但是,我需要獲得原始視頻分辨率/比例,原因有兩個。第一個原因是能夠爲縮略圖世代設置好比例。 (有時是16/9,4/3,iphone視頻......)第二個原因是顯示完美比例的HTML5視頻播放器,以避免播放器兩側的空白空間。

由於Amazon Elastic Transcoder已經自動檢測到視頻分辨率,我以爲他們可能有辦法返回檢測到的分辨率,但似乎並不是這樣!

任何人都可以想辦法讓視頻的分辨率/比率是多少?我目前的解決方案是在我的服務器上從S3下載視頻,並使用FFmpegFFprobe來檢測分辨率。顯然,這並不理想。

回答

1

我有可能爲你工作的方法,但我只是想提一提,沒有對上傳的視頻直接訪問元數據直接限制了彈性轉碼服務,以點用處在那裏我強烈推薦使用另一種像encoding.com(具有諷刺意味的是他們自己的服務器是hosted on AWS)。


所以我的解決方案是,你可以說creates thumbnail files that match the aspect ratio of the original uploaded video通過將其設定使用預設的編碼工作爲「自動」:

縮略圖的縱橫比。如果您希望Elastic Transcoder到 自動檢測輸入文件中的寬高比並將該值用於縮略圖,請選擇自動。如果您要爲縮略圖指定 比率,請選擇適用的值。

在這一點上,你現在有兩種方法實際訪問原始視頻的寬高比(它們都涉及的JavaScript):

1.寫JS的是下載第一縮略圖文件,並明確解析圖像尺寸並通過將寬度除以高度來計算寬高比。

OR

2.指定ThumbnailPatternwhen you create the original job,將產生的縮略圖的文件名,其包括圖像文件的分辨率通過使用 「{resolution}」 佔位符:

縮略圖文件名模式

{分辨率}(可選):如果您希望Elastic Transcoder在文件名中包含 分辨率,請在該字段中包含{resolution}。

然後你就可以了,所以你只需要獲得第一圖像縮略圖編碼的視頻,並使用JS解析該決議的文件名和計算縱橫比。

這兩種方法都很不好,但不需要做任何額外的視頻處理,並且在未來/如果AWS允許您訪問元數據時,您應該有一個非常容易的升級途徑來消除這種混亂。

根據AWS開發者在亞馬遜論壇上的迴應,訪問視頻元數據很可能在不久的將來可用,所以我猜你也有第三種等待的選擇,這個問題可能會自行解決。

+1

我想我明白你的意思了,其實我已經嘗試類似的東西。不幸的是,自動寬高比不會改變縮略圖的分辨率。它只是用黑線剪裁縮略圖以適應縮略圖,而您仍然需要手動設置分辨率。我們現在實施的解決方案是直接針對S3網址使用'ffprobe'。它足夠聰明,不會下載整個文件。 – Hartator 2013-03-24 08:17:24