1

我在 Windows 7 的命令提示符窗口中的批处理文件中执行控制台命令时遇到问题。我想获取视频的帧速率和音频流的数量并将它们写入文本文件。对于帧速率没有问题,我从批处理文件运行此命令:

for %%a in (C:\Documents) do (
    echo.
    Mediainfo --Inform=Video;%%FrameRate%% %%a
)>> "D:\TestFrame2.txt"

但是对于音频流的数量,它返回一个空文本并且没有错误消息。我使用完全相同的批处理文件,但我用VideoAudio替换FrameRateStreamCount.

我在运行时看到这些参数Mediainfo --Help-Inform

还有很多其他的选择,比如Mediainfo --Inform=General;%%AudioCount%%不起作用。

我已经测试过替换InformOutput,没有任何变化。而且我还测试了直接在控制台窗口中使用此命令,而不将结果重定向到文本文件中,这是同一回事。

没有将音频流数量写入文本文件的原因是什么?

4

2 回答 2

2

使用MediaInfoCLI将其输出重定向到文件,无需枚举文件,因为程序可以做到这一点。

  • 列出不带文件名的帧速率:

    pushd c:\documents
    "C:\Program Files (x86)\MediaInfo\MediaInfoCLI" --output=Video;%%FrameRate%%\r\n ^
        *.mpg *.mp4 *.mkv *.avi *.m4a *.flac *.mp3 *.wav >"D:\TestFrame2.txt"
    popd
    
  • 列出文件名和帧速率:(请注意,当它从多个 MediaInfo 部分获取信息时,需要模板文件):

    pushd c:\documents
    (
        echo General;%%FileName%%%%FileExt%%:
        echo Video;%%FrameRate%%\r\n
    ) >"%temp%\mediainfotemplate"
    
    "C:\Program Files (x86)\MediaInfo\MediaInfoCLI" ^
        --output="file://%temp%\mediainfotemplate" ^
        *.mpg *.mp4 *.mkv *.avi *.m4a *.flac *.mp3 *.wav >"D:\TestFrame2.txt"
    
    del "%temp%\mediainfotemplate"
    popd
    

您可以使用显式文件类型列表代替显式文件类型列表*来处理所有文件。

于 2015-09-11T16:43:17.107 回答
0

. C:\Documents是一个文件夹,您必须指定一个掩码,如*.*, *.txt,my-video-??.**.mp4 *.avi

视频 AVI 示例。

(for %%a in (C:\Documents\*.avi) do (echo fake-command %%a)
)>_TestFrame2.txt
于 2015-09-11T16:23:16.283 回答