Kazam视频倍速及格式处理:一个Linux用户的实战笔记
Kazam这个老牌Linux屏幕录制软件,最近又被我翻出来当成主力工具用。原因很简单:在Ubuntu下录教程,我需要一个启动快、不占内存、录完直接能交给FFmpeg做倍速和格式处理的工具,Kazam恰好满足了这条链路的前半段。很多人以为Kazam只能录视频,实际上把它和几个FFmpeg命令组合起来,能轻松实现视频倍速调整、MP4/WebM/MKV互转这些后期需求。这篇文章就把我从录制参数设置、到倍速处理、再到格式转换的完整过程记录下来,适合那些想在Linux下做教程视频、又不想开笨重剪辑软件的朋友。
1. Kazam的定位:为什么Linux屏幕录制偏选它
先说清楚Kazam到底是什么。它是一个基于GTK图形库的桌面端录屏软件,主要负责捕获屏幕画面和声音,同时附带了全屏截图功能。在GNOME桌面环境下,Kazam的集成度特别高,点击顶部录屏按钮就能直接调用,录制时不会在画面里留下水印,也不会疯狂吃CPU。
1.1 Kazam解决的核心问题
Kazam解决的其实是“快速开录”这个需求。如果你录过视频就知道,OBS Studio虽然功能强大,但先要配置场景、设置采集源、调编码参数,等折腾完可能已经没状态了。Kazam打开后就是一个小窗口,选中录制区域、选好音频源、按下Record,三秒内就能进入录制状态。
它还支持三种录制范围:全屏、当前窗口、自定义选区。这个“当前窗口”模式特别实用,录软件操作类教程时,它会自动追踪窗口的移动和缩放,不用手动调整录制框。
音频采集方面,Kazam同时支持麦克风输入、电脑内部音频输出、以及两者同时录制。这意味着你可以在录屏的同时,把系统播放的背景音乐和你的讲解声音都收进去,后期不用再做音轨拼接。
1.2 与SimpleScreenRecorder和OBS的对比
我在不同阶段用过好几款Linux录屏工具,这三者之间的差别相当明显。
| 特征 | Kazam | SimpleScreenRecorder | OBS Studio |
|---|---|---|---|
| 体积与资源占用 | 极小 | 较小 | 较大 |
| 配置门槛 | 极低 | 中等 | 较高 |
| 录制区域跟随窗口 | 支持 | 支持 | 需手动设置 |
| 内置后期处理 | 无 | 无 | 有简单编辑 |
| 适合场景 | 快速录屏 | 重度录屏 | 直播与多路混合 |
从这张表能看出来,Kazam的优势是轻巧和快捷,而它的短板也很明显——没有任何编辑能力。所以实际工作中,我们把Kazam定位成“采集前端”,把FFmpeg定位成“后期处理中枢”,两者配合才能覆盖完整需求。
1.3 为什么教程作者回归Kazam加FFmpeg组合
不少做教程的朋友绕了一圈,最终又回到Kazam。原因是:第一,OBS的虚拟摄像头、直播推流这些功能对纯录屏来说其实是负担;第二,很多人的剪辑需求非常固定,就是“加速某段、剪掉头尾、转成MP4”,用一个FFmpeg命令搞定的事情,没必要打开一个2GB的剪辑软件。
处理后的视频通常也只是发到B站、YouTube或者课程平台,这些平台都接受H.264编码的MP4文件。所以用Kazam录制原始素材,再用FFmpeg统一转成目标格式,确实是Linux下比较高效的工作流。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 录制前的Kazam参数调教:输出格式、帧率与音源设置
很多人一装好Kazam就开始录,结果录完发现画面模糊、声音缺失,或者文件大得离谱。这大概率是设置界面里的几个选项没调好。我在大量录制之后,总结了一套比较稳妥的参数配置。
2.1 安装与基础启动
在Ubuntu或Debian系系统上,安装就一条命令:
bash复制sudo apt install kazam
安装完成后从应用菜单启动,或者在终端输入kazam。如果你是Wayland会话(一般Ubuntu 21.10以上默认使用Wayland),Kazam的窗口捕获可能会出问题,建议在登录界面选择“Ubuntu on Xorg”会话模式再运行。这个坑后面细说。
2.2 Kazam主界面与核心选项
Kazam的主界面只有两页:第一页是录制区域和音频源选择,第二页是输出设置。
音频源这里要注意,如果只想录麦克风发出的声音,选择“麦克风”即可;如果想把电脑播放的视频声音也录进去,选择“扬声器”;两者同时需要就选“同时录制”。我在录演示视频时通常选择“同时录制”,这样既保留了系统操作音效,又能录进讲解声。
进入“偏好设置”面板,主要调整下面几个参数:
- 帧率:我推荐30fps。低于20fps时录鼠标移动会有顿挫感,倍速处理后更明显。
- 压缩率:保持默认,Kazam已经做了一次压缩,后期FFmpeg才是质量关键。
- 视频源:勾选“录制鼠标光标”,否则教程视频里观众找不到鼠标位置。
- 输出目录:建议单独建一个record目录,方便后期清理和批处理。
2.3 关键抉择:录成MP4还是WebM
Kazam的优势是轻巧和快捷,但在录制格式上有一个关键选择:录音时选MP4(H.264+ACC)或WebM(VP8/VP9+Opus)。
这里我给出自己的判断:
- 如果你确定后期一定会用FFmpeg做倍速或转码,推荐直接录制MP4。因为H.264是现在兼容性最好的编码,FFmpeg处理MP4的任何操作都是全流程通用的,而且MP4可以直接拖进在线剪辑平台。
- 如果录制时想节省磁盘空间,可以选WebM。同等画质下VP9编码的文件体积通常比H.264小30%左右,但代价是编码耗时更长,而且一些老旧播放器不支持。
我的习惯是:录制的原始素材用WebM,保存原始画质和透明度信息(WebM支持Alpha通道),但完成倍速处理后,最终发布版一律转成H.264的MP4。
2.4 帧率选择对倍速处理的影响
帧率的选择会直接影响后期倍速效果。你可能没意识到,30fps的视频在倍速处理时,如果目标是2倍速,最终会以60帧每秒的等效速率播放,但因为原始素材只有30fps,所以每帧会被重复或者利用插值算法,看起来依然平滑。
但如果用15fps录制,2倍速后相当于每秒只有30帧的展示量,画面会明显卡顿。因此,如果知道自己要拍倍速视频,建议至少用30fps。
还有一个另类思路:如果本来就是想做一个类似延时摄影的效果,录制时把帧率调低(比如5fps),然后用FFmpeg把播放速度设为正常,就能得到一种“时间加速”的视觉效果。不过这种方式会丢失细节,只适合记录云彩流动、屏幕自动运行脚本这类场景。
3. 视频倍速处理的FFmpeg实操:从2倍速到0.5倍速的完整命令
Kazam本身并不提供“倍速”按钮,所以这一步要交给FFmpeg来完成。FFmpeg是Linux下最强大的音视频处理工具,没有之一。当初我用Python脚本反复调用外部工具想做倍速,后来才发现FFmpeg一条命令就解决。
3.1 为什么倍速处理不能直接改播放器播放速度
播放器自带的倍速播放,本质上只是“跳过画面”,不改变文件本身。如果把这个倍速文件发给别人,对方按正常速播放,看到的还是原来的速度。而我们的目的,是把视频本身变成快节奏的版本,同事、学生或者观看者拿过去,用任何播放器打开都是加速后的效果。
这种“永久加速”需要修改视频的时间戳和音频采样,这正是FFmpeg的强项。
3.2 核心原理:setpts与atempo
FFmpeg里的度速度控制,主要依赖两个过滤器:
setpts:修改视频帧的展示时间戳(Presentation Timestamp)。当时间戳缩短一半,播放器就会以2倍速把帧放完。atempo:修改音频的播放速度,同时自动修正音高。当速度变为2倍时,如果直接让音频波形变快,音频会显得非常尖锐刺耳;atempo则是对音频做重采样和时间伸缩,保持音调不变,是常见且听感较好的算法。
需要注意,atempo在单次调用时,速度范围是0.5到2.0。如果要加速更多倍,比如4倍速,需要串联两次atempo。
3.3 2倍速命令详解
将Kazam录制的input.mp4加速2倍,命令如下:
bash复制ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=PTS/2[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output_2x.mp4
一行命令解决音画同时加速。我们来拆解一下:
-filter_complex:让视频和音频过滤器可以组合使用。[0:v]setpts=PTS/2[v]:取输入文件第0个视频流,将每帧的展示时间除以2,相当于让画面快一倍。PTS/2中的PTS是每个帧原来的时间戳,除以2后,原本第2秒出现的帧会在1秒时出现,播放器读到的帧间间隔缩短,画面自然变快。[0:a]atempo=2.0[a]:把音频速度设为2倍并保持音调。-map "[v]" -map "[a]":把过滤器输出的两路流都放入输出文件。
如果有音量衰减或提升的需求,还可以在atempo后面加上volume=1.5之类的参数,例如:
bash复制ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=PTS/2[v];[0:a]atempo=2.0,volume=1.5[a]" -map "[v]" -map "[a]" output_2x.mp4
3.4 1.5倍速和0.5倍速
1.5倍速非常常用,用于教程中的重复操作部分。命令改成:
bash复制ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=PTS/1.5[v];[0:a]atempo=1.5[a]" -map "[v]" -map "[a]" output_1.5x.mp4
0.5倍速(慢放一半)也很常见,比如复现某个快速操作、看清UI闪动。命令为:
bash复制ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=PTS*2[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" output_0.5x.mp4
注意:慢速播放时,atempo=0.5调节的是音频时间伸缩,配合视频将时间戳放大到原来的2倍,音画才能保持同步。
3.5 超过2倍的加速:链式atempo
如果你需要3倍速、4倍速,atempo=3.0这样直接写会报错,因为它的算法限制在0.5到2.0之间。解决办法是串联两个atempo过滤器。
例如加速3倍:
bash复制ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=PTS/3[v];[0:a]atempo=2.0,atempo=1.5[a]" -map "[v]" -map "[a]" output_3x.mp4
因为2.0乘1.5等于3.0,最终音频速度就是3倍。加速4倍就是两个atempo=2.0:
bash复制ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=PTS/4[v];[0:a]atempo=2.0,atempo=2.0[a]" -map "[v]" -map "[a]" output_4x.mp4
3.6 顺带剪辑:只加速某一段
如果你的需求是“只把中间1分钟加速”,而不是全片加速,可以先用-ss和-to剪切出区间,处理完再合并。当然,更优雅的方式是在一条命令里同时处理:
bash复制ffmpeg -ss 00:02:00 -to 00:03:00 -i input.mp4 -filter_complex "[0:v]setpts=PTS/2[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output_segment_2x.mp4
这条命令的含义是:从第2分钟开始截取到第3分钟,然后把这1分钟的片段加速2倍。最终输出只有30秒。
4. 格式转换的正确姿势:MP4、WebM、MKV互转的编码与容器选择
Kazam录出来的原始文件可能是MP4,也可能是WebM。发布到不同平台,或在不同设备上观看,对格式的要求不一样。网上有很多“万能转换软件”,实际本质上都是调用FFmpeg,搞清楚参数之后,你完全可以自己控制文件质量和大小。
4.1 容器格式与编码格式的关系
先把两组概念理清楚:
- 容器格式:MP4、MKV、AVI、WebM这些后缀名,决定了文件内部如何组织音视频数据。
- 编码格式:H.264、H.265、VP9、AV1这些格式,决定了音频视频数据是如何压缩的。
很多人以为把.webm改成.mp4就能转换格式,这是完全错误的。后缀只是“包装”,内部的数据仍然是VP9或VP8编码。要让一个文件成为真正的MP4,必须用FFmpeg重新编码或者至少封装。
4.2 从Kazam的WebM转到MP4
Kazam录制的WebM文件,里面的视频编码很可能是VP9,音频是Opus。发布到B站或课程平台时,这些平台虽然支持WebM,但为了兼容性,多数用户会选择MP4。
把WebM转成H.264+ACC的MP4,推荐的命令:
bash复制ffmpeg -i input.webm -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 192k output.mp4
参数解释:
-c:v libx264:使用H.264编码器。-crf 23:质量参数,值越小画质越好但文件越大,23是通用值。如果追求高画质可以设18,文件会大很多。-preset medium:编码速度和压缩率之间的平衡点,可选veryfast、fast、medium、slow、veryslow。慢的预设压缩率高但耗时高。-c:a aac:音频编码为AAC,这是MP4容器最常用的音频格式。-b:a 192k:音频码率192kbps,对于人声讲解足够。
4.3 从MP4转到WebM
反过来,有时我们需要更小的文件体积,或者要在网页上内嵌播放,WebM是一个好选择。
把MP4转成VP9+Opus的WebM:
bash复制ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 32 -b:v 0 -c:a libopus output.webm
这里的-crf 32是VP9编码器的质量值,取值范围通常0-63,越小质量越高。32是一个相对均衡的值。特别注意-b:v 0,这个参数告诉VP9编码器使用编码器自动控制码率,搭配CRF模式。如果漏掉这个参数,整个处理的压缩逻辑会变混乱,画质和文件大小都不可控。
4.4 保留画质的无损/近无损复制
如果只是把MP4的封装改成MKV,或者把MKV改成MP4,且编码格式本来就兼容,就没有必要重新编码,直接拷贝流即可。这样可以避免画面质量损失,而且速度极快。
bash复制ffmpeg -i input.mkv -c copy output.mp4
比如Kazam生成的原始文件就是H.264+AAC,你只需要把它从MP4封装改成MKV来给剪辑软件使用,那么-c copy直接完成,秒级处理。
4.5 编码器选择决策表
| 编码器 | 压缩率 | 编码速度 | 兼容性 | 适用场景 |
|---|---|---|---|---|
| libx264 (H.264) | 中等 | 快 | 极高,几乎所有设备/平台支持 | 最终交付、发布上网 |
| libvpx-vp9 | 较高 | 慢 | 中等,多数浏览器支持 | 网页内嵌、节省存储 |
| libaom-av1 | 很高 | 极慢 | 较低,新设备才支持 | 极高画质归档 |
| libsvtav1 | 高 | 中等 | 较低 | 如果你想要AV1又不想等太久 |
4.6 控制输出分辨率和码率
有时候目标平台有分辨率限制,比如某些课程平台要求不超过720p,可以用scale过滤器调整。
bash复制ffmpeg -i input.mp4 -vf scale=1280:720 -c:v libx264 -crf 23 -c:a aac -b:a 192k output_720p.mp4
码率控制也非常重要。假设你希望最终文件每小时不超过500MB,那么码率大概控制在1.1Mbps左右。计算公式是:文件大小(字节)= 码率(bps)× 时长(秒)÷ 8。比较简单的办法是在输出时加-b:v 2M,直接限定视频码率为2Mbps。
实际测试中,1080p的纯屏幕录制内容,2Mbps就能保持清晰,因为录屏的细节变化没有实拍视频那么剧烈,大块静态界面占多数。
5. 录制到处理的常见故障清单与排查链路
这部分写一些我实际踩过的坑。视频处理翻车,很多时候不是FFmpeg命令格式问题,而是从录制阶段就已经埋下隐患。下面按照“发现问题→定位原因→解决方案”的思路,说几个高频故障。
5.1 录出来没有声音
这个坑出现概率极高。首先检查Kazam的音频源是否选对了。如果在录系统播放的视频,却选择了“麦克风”,当然什么都没有。进入Kazam主界面,将音频源切换到“扬声器”或“同时录制”。
如果音频源选对了还是没声音,在终端里先确认PulseAudio服务状态:
bash复制pulseaudio --check
如果返回错误,重启音频服务:
bash复制pulseaudio --kill
pulseaudio --start
接下来可以用FFmpeg查看文件里是否真的没有音频轨:
bash复制ffprobe -show_streams output.mp4
注意看输出部分有没有codec_type=audio。如果没有,说明录制时就没有采集到声音,重新录比后期补轨更简单。如果有音频轨但播放静音,则可能是编码问题,转成AAC即可。
5.2 倍速后画面卡顿或拖影
之前提到过,低帧率录制后做高速倍速会非常明显。但还有一种特殊情况是:录制时帧率本身是30fps,但判断系统负载高,Kazam会自动掉帧,导致时间戳不均匀。FFmpeg加速时遇到不均匀的时间戳,画面看起来就会时快时慢。
解决办法是:录制前关掉不必要的后台任务,尽量保持录制期间CPU稳定。如果素材已经录完且卡顿,尝试用FFmpeg的fps过滤器强制均匀帧率,再做倍速:
bash复制ffmpeg -i input.mp4 -vf "fps=30,setpts=PTS/2" -af "atempo=2.0" output_2x.mp4
如果画面依然卡,可以尝试补帧插值:
bash复制ffmpeg -i input.mp4 -vf "setpts=PTS/2,minterpolate=fps=60:mi_mode=mci" -af "atempo=2.0" output_2x_smooth.mp4
minterpolate会用运动补偿算法在真实帧之间生成中间帧,让画面平滑,但是编码时间会显著增加。我通常只在录制的原始帧率过低时才使用。
5.3 转换后花屏或播放器无法打开
这种情况最常见的原因是像素格式不兼容。有些FFmpeg滤镜处理后会生成高色深的像素格式,但MP4容器里的H.264编码只支持4:2:0色度采样下的像素格式。
解决办法是在输出参数里强制指定像素格式:
bash复制ffmpeg -i input.webm -c:v libx264 -pix_fmt yuv420p -crf 23 -c:a aac output.mp4
加上-pix_fmt yuv420p后,转换出来的MP4几乎是万能播放的。
5.4 Kazam在Wayland会话下黑屏或无法捕获窗口
Ubuntu 22.04之后默认使用Wayland会话,而Kazam是基于X11的工具,在Wayland下经常只能抓到桌面壁纸,窗口内容黑屏。如果你遇到这个问题,在登录界面点击用户名后,输入密码前,选择右下角的齿轮图标,切换到“Ubuntu on Xorg”会话。Kazam只有运行在Xorg环境下才算真正稳定。
5.5 转码后的音频越来越闷
如果把WebM原片转成MP4,然后再次转成WebM,再转成MP4,反复转码会导致音质层层下降。原则是:
- 原始素材永远存一份,绝不覆盖。
- 中间处理尽量用无损或高质量参数,最后一次转码再压缩到目标格式。
如果不得不做多重转码,用FFmpeg时至少保证原始音频采用-c:a copy在内层找机会直接复制,避免重复解码编码。
结尾:我的个人经验与最后分享的一个小技巧
经过这几次折腾,我现在的标准流程是:Kazam录制时选WebM、30fps、同时录制音轨,然后在FFmpeg里先做去噪和音量归一化,再做倍速,最后输出H.264的MP4。整个流程用Shell脚本串联起来,一次处理一批文件,效率很高。
如果你的目标是发布教学视频,我建议倍速上限设在2倍。超过2倍,观众会明显觉得信息密度过大,反而不利于理解。而0.5倍慢速更多用在“强调重点”的特写段,不建议全片慢放。
最后分享一个小技巧:当你只需要快速预览倍速效果时,可以用-vf scale=640:-2把分辨率临时降低,同时倍速,处理速度会快非常多。确认效果满意后,再全分辨率正式处理。这样做可以省下不少等待时间,尤其在处理一小时以上的长录制时非常明显。
