【问题标题】:How to return width and height of a video/image using ffprobe & batch如何使用 ffprobe 和批处理返回视频/图像的宽度和高度
【发布时间】:2016-11-01 04:36:04
【问题描述】:

我需要使用 ffprobe 获取图像文件的宽度和高度,并且需要使用批处理 (Windows) 将其存储在变量中,以便以后可以使用这些值。

我试过这样做,

@echo off
for /f "tokens=1-2" %%i in ('ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=width,height %1') do set W=%%i & set H=%%j
echo %W%
echo %H%

但无法执行

Argument '_' provided as input filename, but 's' was already specified.

附言我也以类似的方式尝试了 imagemagick identify,但是在返回 GIF 文件的高度时,identify 似乎有一个错误

【问题讨论】:

    标签: windows batch-file command-line ffmpeg ffprobe


    【解决方案1】:

    我已经设法调整了你的脚本并且它正在工作,你可以试试这个方法:

    @echo off
    ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=width %1 >> width.txt
    ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height %1 >> height.txt
    FOR /f "tokens=5 delims==_" %%i in (width.txt) do @set width=%%i
    FOR /f "tokens=5 delims==_" %%i in (height.txt) do @set height=%%i
    echo width=%width%
    echo height=%height%
    del width.txt && del height.txt
    pause
    

    【讨论】:

    • 对您添加的内容以及为什么会有所帮助的小解释。
    • 这样你就不会收到错误信息了:Argument '_' provided as input filename, but 's' was already specified.
    【解决方案2】:

    我认为答案太过分了。只是一个ffprobe 命令,没有写入文件,没有控制台消息:

    for /f "delims=" %%a in ('ffprobe -hide_banner -show_streams %1 2^>nul ^| findstr "^width= ^height="') do set "mypicture_%%a"
    

    你以漂亮的环境变量 mypicture_width 和 mypicture_height 结束。您可以通过以下方式进行检查:

    C:\>set mypicture_
    mypicture_height=480
    mypicture_width=640
    

    当然,如果你的图片尺寸是 640x480。

    【讨论】:

      【解决方案3】:

      只需转义 = 字符 ^ 并拆分以检索 w 和 h(可能有一种方法可以一次检索它们,但我不知道)。

      @echo off
      
      for /f "tokens=5 delims==_" %%i in ('ffprobe -v error -of flat^=s^=_ -select_streams v:0 -show_entries stream^=width %1') do set W=%%i
      echo %W%
      
      for /f "tokens=5 delims==_" %%i in ('ffprobe -v error -of flat^=s^=_ -select_streams v:0 -show_entries stream^=height %1') do set H=%%i
      echo %H%
      

      【讨论】:

        猜你喜欢
        • 2016-02-07
        • 2011-03-28
        • 2015-05-15
        • 1970-01-01
        • 2013-12-06
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2023-03-20
        相关资源
        最近更新 更多