我目前正在考虑用 C# 编写 AWS Lambda 函数
- 上传到 S3 的文件会触发我的 Lambda
- Lambda 用于查询文件并获取有关视频编解码器、帧速率、音频 channel 、持续时间的技术元数据
- Lambda 将数据发布到其他服务
我查看了 Nuget 上的 MediaInfo 和 FFMPeg 包装器,但问题是它们都接受 FilePaths 来打开文件,而在 S3/Lambda 中我正在使用流。
我不想创建 EFS 来临时存储文件,因为这似乎有些过分,而且我认为库也不应该需要读取整个流来获取元数据。
本质上我想做的类似于 this但我是一个 .net 人,不想学习 Python/Docker/Linux 等...
最佳答案
您可以使用 C# 中的 MediaInfo 库,DLL without installer有 C# 绑定(bind),还有 a C# MediaInfo binding example ,它提供了有关如何通过提供 URL(HTTP、FTP、S3...)或通过缓冲区使用 MediaInfo 库的信息(在 C# 中,您可以自己获取内容,因为您是唯一知道如何获取媒体信息的人) Stream) 从流中获取缓冲区数据,并将缓冲区数据发送到 MediaInfo; MediaInfo 表示当它不需要更多数据时,因此不会读取整个流)。
Jérôme,MediaInfo 开发人员
关于C# 从流中读取视频/音频/图像文件元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64382686/