MediaInfo无法处理含特殊字符的AWS S3 URL键的技术咨询
我之前也碰到过MediaInfo处理云存储URL时的字符兼容问题,先梳理下你当前的情况:
- 你正在使用MediaInfoLib - v17.12版本,可通过命令
mediainfo --version验证 - 本地文件包含特殊字符(比如
&)时,用单引号包裹文件名执行命令就能正常获取信息,比如执行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
Vid...
但当目标是带特殊字符的AWS S3 URL中的S3键时,MediaInfo就无法正常处理了。这里给你几个可行的解决思路:
1. 对S3 URL中的特殊字符进行URL编码
将S3键里的特殊字符替换成对应的URL编码值,比如:
&替换为%26- 空格替换为
%20 - 其他特殊字符参考URL编码表转换
转换后再把完整的编码URL传给MediaInfo,比如原S3 URL是 s3://my-bucket/mini & bar.mp4,编码后变为 s3://my-bucket/mini%20%26%20bar.mp4,执行命令:mediainfo 's3://my-bucket/mini%20%26%20bar.mp4' 即可。
2. 将S3桶挂载为本地文件系统
借助s3fs这类工具把AWS S3桶挂载到本地目录,这样S3对象就像本地文件一样被访问,你可以直接用处理本地带特殊字符文件的方式(比如单引号包裹路径)来执行MediaInfo命令,避开URL解析的问题。
3. 升级MediaInfo到最新版本
你当前使用的v17.12是2017年的旧版本,后续的MediaInfo版本大概率修复了云存储URL的特殊字符兼容问题,建议升级到最新稳定版后再测试。
内容的提问来源于stack exchange,提问作者Swati

