MediaInfo CLI(命令行界面)语法教我一次&全民

时间:2016-12-19 22:27:05

标签: syntax parameters command-line-interface info mediainfo

Stack Overflow的亲爱的朋友, 这里有一种质疑模式,我注意到很多类别,但为了这个主题,我将讨论MediaInfo CLI。相同类型的问题不断发生,因为源问题是 NOT 解决,这是教人们如何捕鱼,而不是用鱼喂养。

有些人问: “我不知道如何只从MediaInfo获得BitRate”。他们受到尊重,回答他们的高级用户也受到尊重。其他人对FrameRate,持续时间和&决议......我尊重他们,也尊重那些回答他们的人。

然而,我真的很抱歉这个过程是多余的。遗憾的是,MediaInfo网站文档没有说明如何正确使用带有CLI版本的MediaInfo.exe来提取特定信息,而--Info参数只列出了很多参数,而没有说明如何使用它们。

因此,为了使用MediaInfo.exe CLI提取视频的特定信息,我只需要在这里问一下,因为我自己无法自定义参数,因为我没有得到文档的语法。我会采取简单的方法,只是问你需要从视频中提取哪些信息,但是每个不懂语法的人都会回来询问多余的问题。

相反,我决定通过编写所有这些来浪费更多的时间,希望你能帮助我和其他所有人来寻找如何使用MediaInfo CLI的特定问题 - 信息参数语法,以便不会为每个自定义查询重复答案。

老实说,我想了解如何使用它,而不仅仅是复制粘贴我将收到的现成的单行答案。

我首先要提到我所知道的,任何新的询问者都可以从我所知道的很少的东西中学习,然后我会请教你如何编写适当的MediaInfo --Info-Parameters语法来提取具体的视频信息。

  1. 将MediaInfo下载到Windows的CLI版本后,解压缩zip文件并将其放在桌面上。
  2. RUN + CMD
  3. 导航到桌面上的MediaInfo文件夹。
  4. 将一些视频文件放在MediaInfo文件夹中。
  5. 在终端上运行以下命令:

    MediaInfo.exe - help> Help.txt

    MediaInfo.exe - 信息 - 参数> Info_Parameters.txt

  6. 现在您有一些帮助文件来搜索您所需的信息。这些简单文档的其余部分取决于我的StackOverflow成员的慷慨。

    为了更清楚我的问题,一劳永逸:如何为MediaInfo.exe CLI编写正确的语法,以提取特定信息,如FrameRate,Duration和&解析度?我需要理解语法,而不是现成的解决方案,以便以后能够自定义它。

    感谢您的时间!

3 个答案:

答案 0 :(得分:3)

在命令行上也可以这样做:

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

请注意各节之间的“ \ n”

在Ubuntu 18.04 MediaInfo命令行上进行了测试, MediaInfoLib-v17.12

答案 1 :(得分:0)

运行mediainfo --Info-Parameters时,您会注意到有七个部分:常规,视频,音频,文本,其他,图像和菜单。每个部分都包含许多不同的参数,这些参数包含有关文件的各种信息,并以--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

这些参数将按照在模板中写入的顺序显示,并且您无法在各个部分之间来回移动(在本示例中,我无法在“视频”部分之后添加更多常规参数)。要调用模板,请使用语法mediainfo --Output=file://template.txt video.mkvmediainfo --Output=file://C:\full\path\to\the\template.txt video.mkv

答案 2 :(得分:0)

最近我遇到了一个名为 jq 的命令行工具。此工具使用过滤器来操作 json 数据,就像您查询数据库一样。
在我看来,这个工具可以成为输出 JSON 的 mediainfo 功能的完美伴侣。
当然,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"
}

一旦您熟悉了 jq 的过滤器,就有无限可能。