You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac系统下如何截取指定窗口?含Imagemagick/Ffmpeg实现咨询

在Mac上捕获包含超出屏幕区域的应用窗口(FFmpeg/ImageMagick方案)

FFmpeg 实现方案

Mac 下 FFmpeg 不支持 X11 ID,但可以通过 avfoundation 输入设备直接定位目标窗口,且默认支持捕获窗口完整区域(包括超出显示器可视范围的部分)。

  • 获取窗口标识
    用 osascript 查询目标窗口的名称或PID:

    # 列出所有应用窗口名称
    osascript -e 'tell application "System Events" to get name of every window of every application'
    # 获取指定应用的PID(替换YourAppName为目标应用名)
    osascript -e 'tell application "YourAppName" to get its PID'
    
  • 执行窗口捕获
    根据窗口名称或PID启动FFmpeg捕获:

    # 通过窗口名称捕获(替换Your Window Title为实际窗口名)
    ffmpeg -f avfoundation -window_title "Your Window Title" -i "none" -vcodec libx264 output.mp4
    
    # 通过PID捕获(替换YourAppName为目标应用名)
    ffmpeg -f avfoundation -window_id $(osascript -e 'tell application "YourAppName" to get its PID') -i "none" -vcodec libx264 output.mp4
    

ImageMagick 实现方案

ImageMagick 本身没有Mac原生窗口捕获能力,可配合系统自带的 screencapture 命令完成完整窗口捕获,再用ImageMagick处理。

  • 捕获完整窗口
    先获取窗口ID,再用 screencapture 的 -o 参数强制捕获超出屏幕的区域:

    # 获取目标应用的前置窗口ID(替换YourAppName为目标应用名)
    WINDOW_ID=$(osascript -e 'tell application "YourAppName" to id of front window')
    # 捕获完整窗口到图片
    screencapture -l $WINDOW_ID -o full_window.png
    
  • ImageMagick 后续处理
    捕获完成后,可直接用ImageMagick进行格式转换、裁剪等操作:

    # 将捕获的图片转为JPG并压缩
    convert full_window.png -quality 80 full_window.jpg
    

注意事项

  • 需授予终端/FFmpeg/ImageMagick 屏幕录制权限:前往「系统设置」→「隐私与安全性」→「屏幕录制」,添加对应应用。
  • 部分全屏应用可能无法捕获完整窗口,建议切换为窗口模式后尝试。
  • 窗口名称含空格时,需用双引号包裹(如 "My Project Window")。

内容的提问来源于stack exchange,提问作者youngho Park

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:01:07