0

我正在使用最新的媒体信息。mediainfo --version 显示 MediaInfoLib - v17.12

在文件名中使用特殊字符时,它会显示有效的输出。

>mediainfo 'mini & bar.mp4' 

    Complete name                            : mini & bar.mp4
    Format                                   : MPEG-4
    Format profile                           : Base Media / Version 2
    Codec ID                                 : mp42 (mp41/mp42/isom)
    File size                                : 380 KiB
    Duration                                 : 4 s 4 ms
    Overall bit rate mode                    : Variable
    Overall bit rate                         : 777 kb/s
    Movie name                               : mini
    Encoded date                             : UTC 2015-02-21 06:02:24
    Tagged date                              : UTC 2015-02-21 06:02:26

    Video
    ID                                       : 1
    Format                                   : AVC
    Format/Info                              : Advanced Video Codec
    Format profile                           : High@L3.1
    Format settings                          : CABAC / 2 Ref Frames
    Format settings, CABAC                   : Yes
    Format settings, ReFrames                : 2 frames
    Codec ID                                 : avc1
    Codec ID/Info                            : Advanced Video Coding
    Duration                                 : 4 s 4 ms
    Bit rate mode                            : Variable
    Bit rate                                 : 768 kb/s
    Width                                    : 854 pixels
    Height                                   : 480 pixels
    Display aspect ratio                     : 16:9
    Frame rate mode                          : Constant
    Frame rate                               : 29.970 (30000/1001) FPS
    Original frame rate                      : 25.000 FPS
    Color space                              : YUV
    Chroma subsampling                       : 4:2:0
    Bit depth                                : 8 bits
    Scan type                                : Progressive
    Bits/(Pixel*Frame)                       : 0.063
    Stream size                              : 378 KiB (99%)
    Title                                    : Core Media Video
    Encoded date                             : UTC 2015-02-21 06:02:24
    Tagged date                              : UTC 2015-02-21 06:02:26
    Color range                              : Limited
    Color primaries                          : BT.601 NTSC
    Transfer characteristics                 : BT.709
    Matrix coefficients                      : BT.601

虽然如果我使用带有特殊字符的文件名(有效的 s3 密钥),来自 AWS S3,它不会接受它作为有效输入。我在下面使用了用户名、密码和存储桶名称特定于我的 aws 帐户的 url。'testing/mini & bar.mp4' 是关键。

https://username:secret@s3-ap-southeast-2.amazonaws.com/bucketname/testing/mini & bar.mp4

<Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message><Key>testing/mini</Key><RequestId>157877D3B661D9A6</RequestId></Error>

如果将其与单引号或双引号一起使用,则会显示签名不匹配错误。

<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>

查看 MediaArea/MediaInfoLib 代码时,似乎只处理了空格,而没有为 aws 键处理其他特殊字符。

来自 Reader_libcurl.cpp

// URL encoding
MediaInfo_Config::urlencode ShouldUrlEncode=Config.URLEncode_Get();
if (ShouldUrlEncode==MediaInfo_Config::URLEncode_Guess)
{
    if (File_URL.Path.find(' '))
        ShouldUrlEncode=MediaInfo_Config::URLEncode_Yes;
}
if (ShouldUrlEncode==MediaInfo_Config::URLEncode_Yes)
    File_URL.Path=ZenLib::Format::Http::URL_Encoded_Encode(File_URL.Path);

当进一步搜索此类问题时,以下问题讨论了 aws key 中的空间,现在似乎已解决。 https://sourceforge.net/p/mediainfo/bugs/960/

所以我的问题是:

  1. 为什么 mediainfo 不处理 AWS 密钥中的特殊字符?
  2. 基于代码,--urlencode 选项设置 url 编码。如何使用此选项,此选项是否强制 url 编码和带有特殊字符的 aws 键将被接受?
  3. 是否有任何解决方法可以在具有特殊字符的 s3 url 上获取 mediainfo 的结果?
  4. 如何解决这个问题?
4

1 回答 1

0

我找到了解决我的问题的方法,即使用预签名的 url。

以下是我使用过的命令:

1. aws s3 presign 's3://bucketname/testing/mini & bar™©.mp4' 
   output is => "presignd url"
2. mediainfo 'presignd url'

希望能帮助到你!!

于 2018-03-28T03:11:31.350 回答