很多人第一次在Kali Linux下录屏,几乎都会经历同样的流程:在Windows上随便找个录屏软件都能用,换到Linux按理说也差不多,结果装上软件、按下录制键,要么得到全黑画面,要么就是完全没有声音的视频。我也没少在这上面折腾。这篇内容就是一次实测整理:Kali Linux下哪些录屏软件真正靠谱、每个方案适合什么场景、遇到黑屏和无声该怎么快速定位,最后给出我自己固定下来的录制配置。适合正在把Kali当日常系统用、需要录教学演示,或者要给CTF解题过程留档的朋友参考。
1. 动手之前,先弄清楚Kali的显示环境
直接告诉你结论:任何录屏软件推荐,都必须建立在显示环境确认清楚的前提下,否则就是盲人摸象。
Kali Linux虽然和Debian同源,但它的默认桌面、音频栈和显卡驱动都有自己的脾气。默认登录的Xfce桌面走的是X11图形会话,这点和Ubuntu这些年默认切到Wayland不太一样。而录屏软件大多数是围绕X11的抓屏机制设计的,比如ffmpeg的x11grab、SimpleScreenRecorder的老牌抓屏方式,都深度依赖X11。如果你不知道自己当前会话是X11还是Wayland,那录屏失败的第一现场往往就出在这里。
1.1 X11还是Wayland:录屏失败的第一道分水岭
查这个很简单,打开终端执行:
bash复制echo $XDG_SESSION_TYPE
输出如果是x11,那绝大多数录屏软件都能直接用;如果输出是wayland,或者你看到Sway这类Wayland合成器在跑,那么传统X11抓屏方式会全部失灵。Wayland出于安全设计,普通应用默认无法直接读取其他窗口的像素,必须走图形门户(Portal)或者屏幕共享协议,很多面向X11的老录屏软件在这个环境里要么黑屏,要么只能录到一个空白桌面。
Kali默认几乎不会遇到Wayland的情况,但如果你改装过桌面、装了某些新版合成器,这一步检查就别跳过。更稳妥的确认方式:
bash复制loginctl list-sessions
loginctl show-session <session_id> -p Type
把session_id换成你自己登录的会话编号就行。确认了X11,后面选软件的思路会清晰很多。
1.2 显卡驱动、虚拟机与录制权限:基本盘先稳住
第二个影响录屏体验的因素是显卡和被动权限。Kali Linux不保证你的笔记本显卡驱动装得完整,很多人的Kali干脆是跑在虚拟机里的。虚拟机环境下GPU 3D加速很弱,甚至没有直通,录屏编码的压力几乎全部落在CPU上。这种情况下一味追求高帧率和原画质是没意义的,后面我会专门讲怎么调参数。
另外有个特别容易翻车的点:很多人拿root账号登录Kali,这没问题,桌面会话的DISPLAY变量通常是:0,录屏软件直接选默认值就能找到屏幕。但如果你的录屏命令是从SSH远程会话里发起的,就一定要显式指定DISPLAY,例如:
bash复制export DISPLAY=:0
不指定的话,软件根本找不到当前正在运行的图形界面,什么也录不出来。
多显示器的用户还要搞清楚当前显示器对应的编号。执行xrandr看输出,分辨率和连接状态一目了然。如果走KVM切换器、远程桌面这类环境,录屏前最好先确认你正对的那个显示器是不是你真正想录的那个,不然对着副屏录了半天,主屏的窗口一个都没进去,这种低级错误真不少见。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 四类主流的录屏方案怎么选
把Kali下的录屏方案分个类,讲清楚每一类适合干什么、不适合干什么,比单纯拉一个软件清单有用得多。
2.1 OBS Studio:功能最全,但别当成默认首选
OBS Studio大概是很多人第一个想到的选项,场景切换、窗口采集、麦克风降噪、直播推流一套全齐,做规范化教学视频非常合适。在Kali Linux下安装也不复杂:
bash复制sudo apt install obs-studio
Kali官方源里就有,版本可能不是最新,但功能层面完全够用。OBS在Xfce下跑起来其实比在Gnome里轻不少,不过第一次启动还是需要几秒钟。它的优势是灵活,支持多音轨、转场、摄像头画中画,还能接虚拟摄像机。
我用它录过实验演示,有一个细节必须提:在X11下选“显示器采集”时,默认可能不包含鼠标指针,需要到采集源属性里把“捕获鼠标”勾上,否则录出来的视频里光标是消失的。至于它的问题,主要是配置成本高。你要录一个10分钟的命令行演示,为了OBS去搭建一堆场景和音轨,属于杀鸡用牛刀。我的定位很清楚:OBS留给正经的长视频项目。
2.2 SimpleScreenRecorder:轻量又稳,我推荐的第一顺位
如果只让我推荐一个Kali Linux录屏软件,我的答案一定是SimpleScreenRecorder,一般简称SSR。它的老式GTK界面在第一眼并不讨喜,但胜在干净、稳定、资源占用低,和Kali的整体调性非常契合。
安装:
bash复制sudo apt install simplescreenrecorder
SSR支持全屏、窗口、自定义区域三种录制模式,能设置帧率、编码器、质量,还有实时录制区域预览。我最喜欢它的两点:一是CPU占用比OBS低得多,一边录一边操作系统不卡;二是默认输出MP4,H.264编码,文件大小好控制,几乎不需要额外转码。
它的缺点也很明显:没有场景和滤镜体系,快捷键不如OBS丰富。但如果你只是要在Kali上快速录制一段操作过程,SSR是性价比最高的选择。我后来把很多日常录制都挪到了它上面。
2.3 Kazam和VokoscreenNG:轻量GUI的备选
Kazam是Ubuntu时代的老熟人,在Kali里也可以直接安装:
bash复制sudo apt install kazam
它的界面简单到只有全屏、区域、窗口三个选择,外加一个倒计时,适合救急。但编码方式偏老,可调参数太少,录出来的文件偏大,画质也不算顶级,现在更多的是临时用一下。
VokoscreenNG是Vokoscreen的持续维护版本,界面比Kazam现代,支持系统信息显示,录制同时可以开启摄像头小窗口,还能选声音来源。它在Kali的默认源里也能装。两个工具的定位都是“轻量备选”,真要主力录屏,还是建议回到SSR或者ffmpeg。
2.4 ffmpeg:命令行党永远可以信赖的方案
ffmpeg是Linux下最底层、最不吃依赖的录屏方式。Kali上一般自带,没有的话:
bash复制sudo apt install ffmpeg
录屏用到的输入设备是x11grab。这个方案没有预览界面,也没有录制中的可视化控制,但换来的是精确到每一帧的参数控制、完全脚本化的工作流,以及只看命令就能猜出它绝对不会因为缺某个图形库而闪退的可靠性。
我会把ffmpeg作为默认兜底手段:GUI工具出了诡异问题、需要自动化批量录屏、或者要在无显示环境下抓帧时,它永远是可用的退路。下一章我会给一套可以直接用的命令,这里先不展开。
2.5 如果只是录终端:script和asciinema才是更聪明的方案
严格来说这节不是录屏软件,但对Kali Linux用户的价值经常被低估。很多时候你并不需要把整个屏幕录下来,只想记录一段终端会话的输出,方便复盘和分享。asciinema录的是终端文本流,文件极小,还能嵌入网页播放;系统自带的script命令则直接保存终端会话的原始记录。
我现在的习惯是:分享命令行步骤时优先用asciinema,等真需要展示图形界面、窗口切换、鼠标操作时再切换到SimpleScreenRecorder或者ffmpeg。这个原则帮我省下了大量磁盘空间,回放体验反而更好。
| 方案 | 适合场景 | 不擅长 |
|---|---|---|
| OBS Studio | 长视频、直播、多音轨 | 快速录制、低资源占用 |
| SimpleScreenRecorder | 日常操作演示、高效率录制 | 高端直播、复杂场景 |
| Kazam / VokoscreenNG | 临时抓一段、快速区域录制 | 精细参数控制 |
| ffmpeg x11grab | 命令行、脚本化、批量录制 | 实时预览、交互式操作 |
| asciinema / script | 纯终端会话记录 | 图形界面录制 |
3. 一套可以直接抄的ffmpeg命令行流程
如果你愿意花几分钟理解命令,ffmpeg这套方案能让你在Kali Linux下彻底摆脱录屏软件的选择困难症,甚至能形成肌肉记忆。
3.1 基础录屏命令逐项拆解
先给完整命令,我目前固定在用的:
bash复制ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 \
-f pulse -i default \
-c:v libx264 -preset veryfast -crf 23 \
-c:a aac -b:a 128k -threads 0 \
output.mp4
逐项拆一下:
-f x11grab:告诉ffmpeg从X11抓取屏幕,这是录屏的核心输入模块。-video_size 1920x1080:录制分辨率,最好和显示器实际分辨率一致,不然画面会被拉伸或留黑边。-framerate 30:帧率。30帧在录屏里是一个平衡点,鼠标移动顺滑,文件体积又不会失控。如果录的内容主要是敲命令,15帧其实也能看,但鼠标快速划过时会有明显的卡顿感。-i :0.0:X11显示编号。多显示器时可能是:0.1、:0.2,用xrandr查看。-f pulse -i default:从PulseAudio默认设备录音频。注意这里是连续两个输入参数,一个抓屏幕,一个抓声音。-c:v libx264:视频编码用H.264,兼容性最好,几乎所有播放器都能播。-preset veryfast:编码速度选择。veryfast能显著降低CPU压力,代价是同码率下画质略降。对录屏来说,CPU占用过高导致整个系统卡顿远比画质轻微下降更致命。-crf 23:质量因子,数值越小越清晰,文件越大。23在多数场景下已经足够干净,如果录制内容里有大量小字号文字,可以降到18到20。-c:a aac -b:a 128k:音频用AAC编码,128kbps对语音讲解够了。-threads 0:让ffmpeg自动分配线程。
按下回车开始录制,停止录制只需要按键盘上的q。
3.2 只录某个窗口和区域:窗口坐标是关键
很多时候你不想录整个屏幕,只想录某个终端窗口。先用xdotool查窗口信息:
bash复制sudo apt install xdotool
xdotool search --name "终端" getwindowgeometry
拿到窗口的位置和尺寸后,组合成两条参数:
bash复制ffmpeg -f x11grab -video_size 1280x800 -offset_x 100 -offset_y 50 \
-framerate 30 -i :0.0 -c:v libx264 -preset veryfast -crf 23 \
output.mp4
-offset_x和-offset_y是录制区域左上角相对屏幕原点的坐标。对不熟坐标的读者,有个笨办法:打开截图工具,截取你要录的区域,看图片属性里的像素尺寸,那就是-video_size;位置就是-offset_x和-offset_y。
追加一个-show_region 1参数,录制时屏幕上会显示一个矩形边框,标记当前录制的区域边界,便于对齐内容。这个参数在调试时很有用,正式录制时可以去掉。
3.3 录音与录屏分离:灵活处理音频问题
如果你发现录制时系统没有声音,或者麦克风和系统声音音量没法分开控,可以先录一段无声视频,再单独录音频,最后合成。录音频命令:
bash复制ffmpeg -f pulse -i default -c:a aac -b:a 128k audio.m4a
视频单独录:
bash复制ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 \
-c:v libx264 -preset veryfast -crf 23 video.mp4
之后合并:
bash复制ffmpeg -i video.mp4 -i audio.m4a -c:v copy -c:a aac -shortest final.mp4
这种方式看起来多了一步,但对排查问题极有帮助。录屏出现无声问题时,你可以立刻判断是视频源坏了还是音频源坏了,不用把整个链路黑盒化。
4. 我在Kali上踩过的坑:黑屏、无声、卡顿、误录
踩坑经验比工具清单更值钱,因为很多问题网上搜不到,只能自己一趟趟试。
4.1 黑屏:先用ffmpeg截图自测
我第一次在Kali上录屏翻车,就是在OBS里好端端设置了显示器采集,预览画面正常,一按录制键,输出视频全黑。后来发现是OBS的采集源和X11桌面合成器之间的兼容问题。
更快的排查方式是绕开GUI工具,直接用ffmpeg抓一帧看看:
bash复制ffmpeg -f x11grab -video_size 1920x1080 -i :0.0 -frames:v 1 /tmp/test.png
如果/tmp/test.png画面正常,说明X11抓屏的通路是通的,问题出在GUI工具自身的配置上。如果截图也是黑的,那就要按这个顺序查:DISPLAY变量是否正确、当前会话是不是Wayland、显卡驱动是否有黑屏残留问题。
还有一个隐性原因:如果你录屏的内容是3D加速画面,比如虚拟机里跑的OpenGL窗口,部分录屏软件拿不到GPU渲染后的帧。这种情况换成ffmpeg软件抓屏往往就好了。
4.2 完全没有声音:PulseAudio monitor是关键
Kali下无声,九成是音频源选错了。先看当前有什么音频设备:
bash复制pactl list sinks short
pactl list sources short
如果想录制系统播放出来的声音,而不是麦克风声音,需要找到PulseAudio的monitor源,也就是“扬声器回声”。sources列表里面会看到类似:
code复制alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
把这个名字作为ffmpeg的音频源:
bash复制ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 \
-f pulse -i alsa_output.pci-0000_00_1f.3.analog-stereo.monitor \
-c:v libx264 -preset veryfast -crf 23 \
-c:a aac -b:a 128k output.mp4
另一种思路是用PulseAudio的loopback模块,把系统声音和麦克风同时混到一个虚拟设备里。执行:
bash复制pactl load-module module-loopback
然后用default作为输入源就行。这个方法适合想录“系统声音 麦克风”混合音轨的情况,缺点是没法分别调音量。
4.3 一卡一顿:多半是CPU和磁盘的锅
很多Kali Linux是跑在虚拟机里的,帧率超过30后录制就变得卡顿掉帧。先判断CPU是不是瓶颈:录制时另开一个终端,跑htop看占用。如果CPU已经打满,优先把-preset改成ultrafast,再把分辨率降到1280x720。终端操作类视频720p完全够看,没必要抱着1080p不放。
第二个容易忽略的是磁盘IO。录制1080p H.264时,码率大约是每分钟60到150MB不等,如果输出文件放在机械硬盘,持续写入一久就会掉速,录到后面越来越卡。建议把输出路径放到SSD,或者录制前用df -h确认目标目录空间充足。
我个人的经验是:如果录10分钟以上,视频内容又是桌面动态较多的环境,先估算一下需要的空间,别录到一半提示磁盘满导致文件损坏。
4.4 不小心录到不该录的东西,回放检查不能省
Kali Linux经常以root身份运行,环境里可能有访问令牌、密钥、IP地址、内部路径。录屏时这些问题会被原样录进画面。我的习惯是录完立即回放一遍,重点检查标题栏、任务栏通知、终端顶部的工作目录提示。
如果有些敏感区域必须入镜,录完再用剪辑工具加模糊处理也行。更主动的做法是在录屏前准备一个干净的专用工作目录,关闭多余的终端窗口,清空剪贴板,临时隐藏任务栏通知。这一步不能省,尤其当你准备把视频分享出去的时候。录屏技术问题都能解决,但内容泄露没法撤回来。
5. 按场景给的最终配置参考
工具没有绝对好坏,只有适不适合当前场景。这里针对三类最常见需求给出结论。
5.1 三种典型使用场景的推荐组合
| 场景 | 首选工具 | 理由 |
|---|---|---|
| 录制图形操作演示(教人用某个GUI工具) | SimpleScreenRecorder | 轻量、区域选择直观、CPU占用低,不影响演示流畅度 |
| 长篇讲座、直播、需要多音轨和转场 | OBS Studio | 多场景、多轨、推流能力齐全 |
| 纯终端命令操作记录 | asciinema / script | 文件小、可复制文本、回放体验比视频好 |
| 自动化批量录制、脚本集成 | ffmpeg x11grab | 无GUI依赖,参数完全可控 |
如果你的需求是“一边用Kali一边录自己的操作”这种日常场景,首选SimpleScreenRecorder;如果只是偶尔录一下然后分享给别人,选ffmpeg命令行方案就够了。OBS适合系统性产出内容的场景,不是每次录屏都需要它出场。
5.2 我长期固定的脚本参数
我在Kali上固定用一套别名,把日常录屏封装成一行命令:
bash复制#!/bin/bash
# 简单的 Kali Linux 录屏封装
OUT=~/Videos/rec-$(date +%Y%m%d-%H%M%S).mp4
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 \
-f pulse -i default \
-c:v libx264 -preset veryfast -crf 23 \
-c:a aac -b:a 128k -threads 0 \
"$OUT"
保存成可执行文件后,想录就运行一下,按q停止,文件名自动带时间戳,不会覆盖旧文件。需要录窗口时把-video_size和-offset_x、-offset_y改成目标窗口的值就行。
这套方案我用了很长时间,最大的优点是稳定,不依赖任何图形界面,就算Kali某天换了个桌面主题、重装了显卡驱动,命令依然能跑。如果你非要在GUI工具里选一个,SimpleScreenRecorder坚持用下去就够了,它生成的命令行参数在日志里也看得到,稍微研究一下能学到不少ffmpeg的配合方式。
最后说一个小技巧:录屏前先把桌面通知、浏览器通知关掉,再新建一个干净的终端窗口。录出来的视频杂音少、信息干净,比后期花时间剪辑划算得多。Kali Linux下的录屏体验,一旦像这样把环境和工具理清楚,其实比Windows上动不动弹广告的录屏软件还要顺手。
