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

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

我在 S3 上收集了大量视频文件。我还有在 AWS 中运行的应用程序服务器,运行 Java Web 应用程序。从这些应用程序服务器中,我希望能够从每个视频文件中提取元数据,例如 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 检查器相同的字段。有什么想法吗?

最佳答案

Is it possible to do this from the first few MB (or some other mechanism) of a file hosted on S3 without downloading the whole thing locally?

是的,您可以使用 HTTP Range header 获得部分响应。 请参阅 GetObject documentation 上的“带有范围 header 的示例请求” .

Any ideas?

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

关于java - 从 S3 上的前几 MB 中提取视频元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24518035/

相关文章:

java - Mac OSX 上 IntelliJ Idea 中区分大小写的文件

java - 使用 Spring 集成轮询 S3 存储桶中的文件

java - 使用 Gson 反序列化对象数组

java - 有没有办法在 java 中使用 tr///(或等效)?

java - 用于 OR 两个范围正则表达式的正则表达式

amazon-web-services - AWS EMR : setting hadoop credentials provider for S3 Bucket access

javascript - 用户通过 Cognito 身份验证后,如何传递用户凭据来访问 s3 存储桶?

ios - Amazon AWS 和 Paypal 的 Apple mach-o 链接器错误

amazon-web-services - 云形成安全组未创建入口规则

amazon-web-services - 确定 SQS 队列订阅了哪些 SNS 主题