2014-07-01 32 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?非常感谢,如果是的! –