从S3上的前几个MB中提取视频元数据

时间:2014-07-01 19:40:04

标签: java amazon-web-services amazon-s3 ffmpeg

S3上有大量的视频文件。我还在AWS中运行运行Java webapp的应用程序服务器。从这些应用程序服务器,我希望能够从每个视频文件中提取元数据,如Quicktime电影检查员提供的:

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检查器相同的字段。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

  

是否可以从S3上托管的文件的前几个MB(或其他一些机制)执行此操作,而无需在本地下载整个文件?

是的,您使用HTTP Range标头获得部分响应。 请参阅GetObject documentation上的“带范围标题的示例请求”。

  

有什么想法吗?

如果要使用ffmpeg来解析元数据,可以在上载中的对象中将其设置为用户定义的元数据。请参阅:http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#object-metadata

答案 1 :(得分:1)

我在亚马逊上找到了一个非常有趣的教程:

https://aws.amazon.com/blogs/compute/extracting-video-metadata-using-lambda-and-mediainfo/

它使用MediaInfo,因为它不需要下载所有文件。