如何使用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
相关产品推荐
相关产品推荐

