使用 aws lambda node js 获取存储在 s3 存储桶中的视频的视频元数据

Posted

技术标签:

【中文标题】使用 aws lambda node js 获取存储在 s3 存储桶中的视频的视频元数据【英文标题】:Getting video metadata of a video stored in s3 bucket using aws lambda node js 【发布时间】:2020-11-10 20:28:02 【问题描述】:

我有一个视频存储在 aws s3 存储桶中,我想在使用节点 js 运行时的 aws lambda 中获取视频的元数据(如帧速率、分辨率等)。

如果这可以在内存中完成而不是在 lambda 临时内存中下载整个视频会更好

【问题讨论】:

【参考方案1】:

MediaInfo 原生支持 AWS,无需在第一步下载文件。 MediaInfo 将分析所需的内容下载到 RAM 中,并在需要时自行执行搜索请求。

网址样式为https://AWSKey:AWSSecret@s3...。 也可以使用预签名的 URL,但 20.03 版本有问题,您需要使用 MediaInfo snapshots。

Jérôme,MediaInfo 的开发者。

【讨论】:

如果我使用其他网站的 url 会完全下载还是部分获取元数据? 我正在尝试使用 19.09 和 20.03 版本的预签名 URL,但它不起作用。预签名的 URL 在浏览器中运行良好。如何在 aws lambda 中下载更多旧版本 我也试过https://AWSKEY:AWSSECRET@s3.amazonaws.com/bucket/key url,它也不起作用 MediaInfo 的行为在 S3 或其他站点上是相同的。 S3 被很多用户使用,已知 AWSKEY:AWSSECRET 样式(由多个赞助商使用)很好,并且在 20.03(19.09 和快照很好)中预签名的 URls 错误。如果您认为有问题,请将带有真实用例(URL 或临时密钥/秘密)的命令发送到 info@mediaarea.net 以进行调试。 好的。所以,我从最新的快照下载了 lambda zip 文件,它在我之前从网站下载 zip 时可以正常工作。感谢您制作此工具【参考方案2】:

您可以通过headObject operation 获取视频的元数据。

这是在不下载视频的实际内容的情况下完成的。

编辑:你说得对,这对你没有帮助。 提取视频的实际技术元数据似乎并非易事。 AWS blog where they extract metadata via MediaInfo on lambda 上有一个很好的例子。

【讨论】:

headObject 操作返回的数据不包含视频的帧率、分辨率等数据。它包含 contentLength、lastModified 等数据。 你说得对。我已经编辑了我的答案,也许这会有所帮助!

以上是关于使用 aws lambda node js 获取存储在 s3 存储桶中的视频的视频元数据的主要内容,如果未能解决你的问题,请参考以下文章

AWS lambda 调用不调用另一个 lambda 函数 - Node.js

无法通过node.js从lambda获取Amazon CloudWatch日志

如何在 AWS Lambda 中使用 Node.js 列出我的所有 Amazon EC2 实例?

使用nest.js在AWS Lambda中获取Cognito数据(即requestContext)

使用 Node.JS 调用 AWS 胶水的 lambda 函数不使用 console.log 的原因是啥?

AWS Lambda 函数总是返回 null (Node/Javascript)?