Art*_*ian 8 parameters syntax command-line-interface mediainfo info
亲爱的 Stack Overflow 的朋友们,我注意到这里有很多类别的提问模式,但为了这个主题,我将讨论 MediaInfo CLI。同类型的问题不断重复出现,因为源问题没有解决,就是教人钓鱼,而不是喂鱼。
有人问:“我不知道如何仅从 MediaInfo 获取 BitRate”。他们受到尊重,回答他们的高级用户也受到尊重。其他人对 FrameRate、Duration 和 Resolution 提出了同样的问题……我尊重他们,也尊重回答他们的人。
然而,我真的很抱歉这个过程是多余的。不幸的是,MediaInfo 网站文档没有说明如何正确使用带有 CLI 版本的 MediaInfo.exe 来提取特定信息,并且 --Info 参数只是列出了很多参数,而没有说明如何使用它们。
因此,为了使用 MediaInfo.exe CLI 提取视频的特定信息,我只需要在这里提问,因为我无法自己自定义参数,因为我没有获得文档中的语法。我会采取简单的方法来问你我需要从视频中提取什么样的信息,但是每个不知道语法的人都会回来问多余的问题。
相反,我决定通过编写所有这些来浪费您更多的时间,希望您能帮助我和其他所有来搜索有关如何使用 MediaInfo CLI --Info-Parameters 语法的特定问题的人,以便不会为每个自定义查询重复答案。
老实说,我想了解如何使用它,而不仅仅是复制粘贴我将收到的现成的单行答案。
我将首先提到我所知道的,任何新的询问者都可以从我所知道的很少中学习,然后我会请你教我如何编写正确的 MediaInfo --Info-Parameters 语法来提取特定的视频信息.
在终端上运行以下命令:
MediaInfo.exe --help >Help.txt
MediaInfo.exe --Info-Parameters >Info_Parameters.txt
现在您有一些帮助文件来搜索您需要的信息。这个简单文档的其余部分取决于我的 StackOverflow 成员的慷慨。
为了更清楚我的问题,一劳永逸:如何为 MediaInfo.exe CLI 编写正确的语法以提取特定信息,例如帧速率、持续时间和分辨率?我需要比现成的解决方案更了解语法,以便以后能够对其进行自定义。
感谢您的时间!
运行时mediainfo --Info-Parameters,您会注意到有七个部分:General、Video、Audio、Text、Other、Image 和 Menu。这些部分中的每一个都包含许多不同的参数,这些参数包含有关文件的各种信息并使用格式调用--Output=SectionName;%Parameter%。您可以从同一部分名称中选择多个参数,用您喜欢的任何文本将它们分开(包括换行符 \n(但有趣的是,不包括制表符 \t)),例如--Output=SectionName;%Parameter1%\n%Parameter2%.
您还可以添加自己的文本,该文本会按照您编写的方式显示,允许您标记输出以便以后阅读。例如,要获取文件名、持续时间和文件大小,可以使用命令mediainfo --Output="General;File Name: %FileName%\r\nDuration: %Duration/String3%\r\nSize: %FileSize/String%" video.mkv
如果您想从多个部分获取数据(例如向上述信息添加视频维度),则必须使用模板,因为无法在同一--Output命令中从多个部分获取数据,并且--Output每个部分都有多个取消实例直到你得到列表中的最后一个。在模板中,每行指定一个部分并将参数添加到各自的部分,如下所示:
General;File Name: %FileName%\r\nOverall Bit Rate: %OverallBitRate/String%\r\nDuration: %Duration/String3%\r\nFormat: .%FileExtension%\r\nSize: %FileSize/String%\r\n
Video;Dimensions: %Width%x%Height%\r\n
Run Code Online (Sandbox Code Playgroud)
这些参数将按照它们在模板中写入的顺序显示,并且您不能在部分之间来回切换(在此示例中,我无法在视频部分后添加更多常规参数)。要调用模板,请使用语法mediainfo --Output=file://template.txt video.mkv或mediainfo --Output=file://C:\full\path\to\the\template.txt video.mkv。
这些天我遇到了一个名为 的命令行工具jq。该工具使用过滤器来操作json数据,就像您正在查询数据库一样。
在我看来,这个工具可以成为 mediainfo 输出 JSON 功能的完美伴侣。
当然,mediainfo参数很难使用,但我们大多数人都知道如何处理json。最好把时间花在学习jq过滤器语言上,而不是破译神秘的mediainfo参数选项;)
工作流程或多或少是这样的。
jq及其过滤器来提取它。以漂亮的格式查看媒体文件的所有信息json
#> mediainfo --output=JSON myVideo.mp4 | jq .
自定义jq过滤器以获得所需的结果。
#> mediainfo myVideo.mp4 --output=JSON | jq '.media.track[1] | {FrameRate: .FrameRate, Duration: .Duration, Width: .Width, Height: .Height}'
提取的信息...
{
"FrameRate": "30.000",
"Duration": "158.334",
"Width": "320",
"Height": "176"
}
Run Code Online (Sandbox Code Playgroud)
一旦您熟悉了jq的过滤器,可能性就无穷无尽。
这也可以在命令行上进行:
mediainfo --Output=$'General;File Name: %FileName%\\r\\nOverall Bit Rate: %OverallBitRate/String%\\r\\nDuration: %Duration/String3%\\r\\nFormat: .%FileExtension%\\r\\nSize: %FileSize/String%\nVideo;\\r\\nDimensions: %Width%x%Height%\\r\\n' input.file
Run Code Online (Sandbox Code Playgroud)
注意各部分之间的“\n”
在 Ubuntu 18.04 MediaInfo 命令行、MediaInfoLib - v17.12 上测试