如何将 MediaInfo 与 Amazon S3 一起使用?

Posted

技术标签:

【中文标题】如何将 MediaInfo 与 Amazon S3 一起使用?【英文标题】:How to use MediaInfo with Amazon S3? 【发布时间】:2015-12-26 06:20:26 【问题描述】:

根据 MediaInfo ChangeLog,在 v0.7.76 中添加了对 Amazon S3 的支持,甚至在 v0.7.77(最新)中进行了修补。

但是,我找不到任何有关如何实现它的文档。它不在 CLI 帮助菜单中,也不在 SourceForge 项目页面中。由于 SourceForge 论坛已关闭,我希望这里的人可能会有一些见解。

如何制作 MediaInfo 命令以将 Amazon S3 与访问密钥和秘密密钥一起使用?我正在使用 CLI。

我能找到的最接近的是某人的示例 Java 代码: http://fossies.org/linux/MediaInfo_CLI/MediaInfoLib/Source/Example/HowToUse_Dll.JNA.java

看起来他们正在为 S3 制作自定义 HTTP 请求并将响应流式传输到 MediaInfo。我不知道。我不懂Java;我只知道 Bash、Ruby、php

有没有人成功让 MediaInfo 与 S3 一起工作?像这样?

mediainfo https://AWSAccessKeyId:AWSSecretAccessKey@s3.amazonaws.com/bucketname/filename

【问题讨论】:

【参考方案1】:

我面临同样的问题。请试试这个,它会工作的

https://yourAwsAccessKey:yourAwswsSecretKey@yourBucketName.s3.awsamazon.com/file_path_in_bucket

【讨论】:

【参考方案2】:

Mediainfo 可执行文件可以使用以下命令在 Linux 发行版上使用 libcurl 构建:(我使用 centos)

yum groupinstall 'Development Tools'
yum install libcurl-devel
yum install wget
wget http://mediaarea.net/download/binary/mediainfo/17.12/MediaInfo_CLI_17.12_GNU_FromSource.tar.xz
tar xvf MediaInfo_CLI_17.12_GNU_FromSource.tar.xz
cd MediaInfo_CLI_GNU_FromSource/
./CLI_Compile.sh --with-libcurl
cd MediaInfo/Project/GNU/CLI
./mediainfo --version

然后以下命令将为 Amazon S3 url 提供媒体信息。

mediainfo --Output=XML https://AWSAccessKeyId:AWSSecretAccessKey@s3.amazonaws.com/bucketname/filename

上述命令不适用于具有特殊字符的 AWS 密钥(文件名)。通过使用预签名的 url,可以在 AWS Keys 中使用特殊字符。

aws s3 presign 's3://bucketname/testing/mini & bar™©.mp4' 
mediainfo 'presignd url'

【讨论】:

亚马逊已更新其 URL 映射,因此您需要将存储桶名称移动到主机名的开头,并使用句点代替正斜杠。例如,@bucketname.s3.amazonaws.com/filename【参考方案3】:

Java 示例是关于如何使用 Java 下载并将数据从内存发送到 MediaInfo 的示例。现在 MediaInfo 已经原生支持 S3。因此,只需提供此 URL。

唯一的问题是您必须有可用的 libcurl,并且 MediaInfo 必须使用 libcurl 支持编译。这并非在所有平台上都可用(例如,在 Windows 上,您必须将 libcurl 网站中的 libcurl.dll 放在与 mediainfo 相同的文件夹中)。

计划更好地提供此类支持(直接提供 libcurl,并在所有平台上进行全面测试),但没有预计到达时间。

【讨论】:

感谢您阐明 Java 示例。那正是我所想。我已经编译了 libcurl(在 Ubuntu 上),我可以成功使用 S3 URL。但是这些对象必须具有公共读取访问权限才能工作。您能否提供一个使用 S3 凭证(访问密钥和秘密访问密钥)的新功能的示例,好吗?我想访问 S3 中的私有对象。 您提供的示例是提供私有 URL 的正确方法。我在开发私有 URL 功能时自己测试了它。不幸的是,目前没有调试功能(没有关于错误的解释)。

以上是关于如何将 MediaInfo 与 Amazon S3 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

从 Amazon S3 创建表时,Athena 如何将数据与正确的字段匹配?

SignatureDoesNotMatch - Amazon S3 API

如何使用 Java SDK 将目录与 AWS S3 同步?

如何将日志从 Amazon S3 存储桶导入到 cloudwatch

如何检测 Amazon S3 中的变化? [复制]

Laravel 5:如何将文件从Amazon S3复制(流)到FTP?