Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#从流中读取视频/音频/图像文件元数据_C#_Amazon S3_Aws Lambda_Mediainfo - Fatal编程技术网

C#从流中读取视频/音频/图像文件元数据

C#从流中读取视频/音频/图像文件元数据,c#,amazon-s3,aws-lambda,mediainfo,C#,Amazon S3,Aws Lambda,Mediainfo,我目前正在寻找用C编写一个AWS Lambda函数# 上传到S3的文件触发我的Lambda Lambda可以查询文件并获取有关视频编解码器、帧速率、音频通道和持续时间的技术元数据 Lambda将该数据发布到另一个服务 我在Nuget上查看了MediaInfo和FFMPeg包装器,但问题是它们都接受文件路径来打开文件,而在S3/Lambda land中,我使用的是流 我不想创建一个EFS来临时存储文件,因为这似乎有些过分,而且我认为库也不需要读取整个流来获取元数据 基本上,我想做的事情与之类似,但

我目前正在寻找用C编写一个AWS Lambda函数#

  • 上传到S3的文件触发我的Lambda
  • Lambda可以查询文件并获取有关视频编解码器、帧速率、音频通道和持续时间的技术元数据
  • Lambda将该数据发布到另一个服务
  • 我在Nuget上查看了MediaInfo和FFMPeg包装器,但问题是它们都接受文件路径来打开文件,而在S3/Lambda land中,我使用的是流

    我不想创建一个EFS来临时存储文件,因为这似乎有些过分,而且我认为库也不需要读取整个流来获取元数据


    基本上,我想做的事情与之类似,但我是一个.net爱好者,不想学习Python/Docker/Linux等。

    您可以从C#使用MediaInfo库,它有C#绑定,还有一个,通过提供URL(HTTP、FTP、S3…)或缓冲区来提供有关如何使用MediaInfo库的信息(在C#中,您自己获取内容,因为您是唯一知道如何获取流的人)从您的流中获取缓冲区数据,并将缓冲区数据发送给MediaInfo;MediaInfo表示不需要更多数据,因此不读取整个流)


    Jérôme,MediaInfo开发者

    为了确保您支持所有格式(解复用器/编解码器),我将使用FFmpeg.Autogen.NET绑定和FFmpeg win构建。然后,您可以获得所有流所需的所有信息(包括编解码器和元数据)


    (不熟悉AWS lambda,所以不确定这是否有效)

    谢谢Jerome,我明天会检查一下,如果我能正常工作,我会更新帖子!嗨,杰罗姆,我已经在本地机器上运行了代码。我的目标是.Net Core 3.1,所以我使用了nuget包MediaInfo.Wrapper.Core。我遇到的问题是,当代码上传到AWS Lambda时,我得到“无法加载MediaInfo库”。在什么情况下会返回此错误消息?我可以在我的邮箱中看到MediaInfo.Wrapper.Core.dll,我知道它在压缩包中,该压缩包将发送到AWS Lambda,它也以.Net Core 3.1为目标。有什么想法吗?我们不开发nuget软件包MediaInfo.Wrapper.Core,所以您需要询问他们的开发人员。“无法加载MediaInfo库”错误是指当软件未找到库(.dll、.so…)时,您有责任使软件指向MediaInfo位置。仅供参考,有一个随时可用的MediaInfo Lambda(不是C#虽然)。谢谢Jerome,有关于Lambda层如何上传和随后使用的文档吗?我确信我的C#函数可以简单地调用它,但我找不到任何关于如何在您的站点上使用lambda层的信息/示例。这是一个经典的二进制文件(可执行文件或库。因此)与AWS lambda兼容(包括所有依赖项),之后这就是经典的AWS lambda管理(需要通过系统调用或从库接口调用二进制文件),MediaInfo没有任何特定的功能。我不是开发此功能的人,我将了解如何添加AWS Lambda使用的基本示例。