2014-07-01 31 views
0

我在S3上收集了大量的視頻文件。我還有運行在AWS上運行Java Web應用程序的應用程序服務器。從這些應用程序服務器,我想能夠從諸如由QuickTime電影檢查員提供每個視頻文件中提取元數據:從S3上的第幾個MB中提取視頻元數據

Source: /home/me/foo.mov 
Format: H.264, 1920x1080 
FPS: 29.97 
Data Size: 16.8 MB 
Data Rate: 6.70 Mbit/s 

現在,我可以清楚的ffmpeg得到這樣的信息:

$ ffmpeg -i /home/me/foo.mov 

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/me/foo.mov': 
    Metadata: 
    major_brand  : isom 
    minor_version : 1 
    compatible_brands: isomavc1mp42 
    creation_time : 2014-06-30 22:40:08 
    Duration: 00:00:20.02, start: 0.000000, bitrate: 6698 kb/s 
    Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 6696 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default) 
    Metadata: 
     creation_time : 2014-06-30 22:39:09 
     handler_name : GPAC ISO Video Handler 

我可以很容易地解析出Quicktime輸出的等效字段!但是,這需要我在本地有文件。是否有可能從S3上託管的文件的前幾個MB(或某種其他機制)執行此操作,而無需在本地下載整個文件?這裏的目標是從S3上的文件中提取與quicktime檢查器相同的字段。有任何想法嗎?

回答

1

是否可以從S3上託管的文件的前幾個MB(或某種其他機制)做到這一點,而無需在本地下載整個東西?

是的,你會得到部分響應使用HTTP範圍頭。 請參閱GetObject documentation上的「帶範圍標題的樣品請求」。

任何想法?

如果你想使用ffmpeg來解析元數據,你可以在上傳時將對象設置爲用戶定義的元數據。請參閱:http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#object-metadata

+0

您提到的第二種方法聽起來很有用。我可能需要檢查一下,如果我們能夠將文件的前幾個MB提供給ffmpeg以使第一種方法可行。現在檢查。 –

+0

謝謝,我在ffmpeg庫中使用了這個邏輯+ ffprobe,效果很好。你認爲你能幫助我嗎? http://stackoverflow.com/questions/24537884/how-to-get-first-n-bytes-of-file-from-s3-url?非常感謝,如果是的! –