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

如何使用ffmpeg-python实现x11grab屏幕采集的等效shell命令功能

ffmpeg-python实现x11grab录屏的等效代码

ffmpeg-python本质是FFmpeg命令的参数透层封装,没有专门的x11grab示例不代表不支持,直接通过input方法指定输入格式参数即可,所有FFmpeg原生选项都可以直接透传使用。

完整实现代码

import ffmpeg

# 构造x11grab视频输入流
video_input = ffmpeg.input(
    ':1',
    f='x11grab',
    video_size='1920x1080',
    r=60,
    framerate=30
)

# 构造alsa音频输入流
audio_input = ffmpeg.input(
    'pulse',
    f='alsa',
    ac=2
)

# 合并流、设置输出参数并执行
stream = ffmpeg.output(
    video_input,
    audio_input,
    'file.mkv',
    preset='fast',
    pix_fmt='yuv420p'
).global_args(
    '-nostdin',
    '-hide_banner',
    '-nostats',
    '-loglevel', 'panic'
).run_async() # 对应原命令末尾&的后台运行效果,不阻塞主进程

对应原命令的参数说明

  • 原命令开头的全局参数-nostdin -hide_banner -nostats -loglevel panic通过global_args()方法传入,完全保持原生参数写法
  • x11grab视频输入的所有参数直接作为input()方法的关键字参数传入,ffmpeg-python会自动将Python参数的下划线转换为FFmpeg选项的横杠
  • 音频输入的alsa参数同理单独构造输入流即可
  • 如果需要阻塞等待录屏任务结束,把run_async()替换为run()即可

验证命令正确性

你可以在执行前调用.compile()方法打印实际生成的FFmpeg命令,和你原本的shell命令做对比,确认参数完全一致:

print(stream.compile())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:24:05