我在 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/