Linux上的录屏经历 kazam OBS ffmpeg 及 oCam(Win) filmage screen(Mac)

从2026年开始用Linux Debian 13 作为日常主力机,在此记录比较耗时解决的问题

录屏软件问题

Kazam 软件,可以在 Xfce 上使用,操作简单,效果不错。

问题:mp4文件在苹果设备上没有声音只有图像;在Win上播放图像有问题;这是很多Linux用户都遇到的问题。


AI给出的分析和解决方案

现在什么问题都可以问AI,大部分情况下也有帮助,AI通常可以帮助分析原因,提供解决方案,当然也常常发生幻觉,或者并不是完整的解决方案,在此分享主要的解决路线,...省略...部分读者也可以按自己偏好继续用AI完成自己的解决方案。

问题原因分析

这个还是比较要紧的信息,一旦走不通可以回头看看问题可能在哪里。

1. Kazam 默认使用的编码器可能不标准

Kazam 默认使用 GStreamer 后端进行录制,其默认输出格式虽然扩展名为 .mp4,但:

  • 视频编码 可能是 VP8VP9 或非标准 H.264 profile;
  • 音频编码 可能是 OpusVorbis 等开源格式,而非 Windows/macOS 原生广泛支持的 AAC。

⚠️ Windows 的媒体播放器(如 Movies & TV、旧版 Windows Media Player)和 macOS 的 QuickTime 对非标准或开源编解码器支持有限。

2. MP4 容器中的编码流不符合通用规范

即使文件后缀是 .mp4,如果内部音视频流使用了:

  • 非 ISO/IEC 标准的 H.264 编码参数(如 high profile + B帧),
  • Opus 音频封装在 MP4 容器中(macOS 不支持 MP4 中的 Opus),

就会导致跨平台播放异常。


使用OBS的问题

AI推荐了OBS方案,虽然OBS是非常专业的软件,但在Linux上使用并不是很方便。

  • OBS 在 X11 环境更方便, Xfce 用的是Wayland环境
  • 在 Debian 13 上使用 OBS 录制浏览器内容时,遇到 录制画面右侧出现大量黑边(多出约 1/3 黑屏) ,而实际浏览器窗口比 OBS 捕获区域"左右短了 500 像素"------这通常是由于 OBS 场景分辨率与源(浏览器窗口)尺寸不匹配 ,或 窗口捕获未正确适配窗口真实尺寸 导致的。这是更加麻烦的问题。

下面提供 系统性排查 + 解决方案,适用于 Linux(特别是 Wayland/X11 环境):


🔍 问题根源分析

  1. OBS 场景画布(Base Canvas)分辨率 ≠ 浏览器窗口实际分辨率

    • OBS 默认场景可能是 1920×1080,但你的浏览器窗口只有 1400×900,导致右侧留黑。
  2. 窗口捕获源未自动缩放或居中

    • OBS 添加"窗口捕获"后,默认以 1:1 像素显示,若场景更大,就会留黑。
  3. Wayland 下窗口元信息不准

    • 在 Wayland 会话中,某些合成器(如 GNOME/Wayland)返回的窗口尺寸包含装饰边框或 DPI 缩放偏差,导致捕获区域偏大。
  4. 浏览器使用了非整数缩放(如 125%、150%)

    • 高 DPI 缩放下,逻辑分辨率与物理像素不一致,OBS 可能误判窗口大小。

✅解决方法:将场景分辨率设为浏览器窗口尺寸(推荐用于固定窗口录制)

这里只是简单记录一下要点

如果你每次都用相同大小的浏览器窗口:

...省略...

在 X11 下获取窗口尺寸:
复制代码
xwininfo

输出中查看:

text : Width: 1400 Height: 900

在 Wayland 下(较难):
  • 使用截图工具(如 Flameshot)截图后查看图像属性
  • 或在浏览器开发者工具中用 JS 获取:
    ...省略...

尝试用 oCam(Win)

原来一直用Win上oCam的录屏,但当时没有用过麦克风录音,所以也没有发现过问题,这次用了麦克风发现有交流声,虽然只是在开始一段比较明显,但还是很刺耳。

尝试用 filmage screen (MacOS)

原以为用M1 MacBook会是最后的保障,但被事实打脸,在没有风扇的MacBook上用 filmage screen 录出来的视频交流声比oCam的录屏要大多了,完全无法让人忍受。

最终解决方案

据说 ffmpeg 命令行灵活好用,但实在无法想象,故选择了转换的方案。

结果50mb视频最后的输出只有20mb,这实在是个意外的结果,就冲着这个压缩率也要保留这个方案。

最终选择这个方案的重要提示来自下面的信息:

❌ 问题:MP3 音频被封装在 MP4 容器中

  • 虽然 MP3 是通用音频格式,但 Apple 的 QuickTime / Safari / iOS 原生播放器不支持 MP3 音轨封装在 .mp4 文件中
  • Apple 要求 MP4 容器中的音频必须是 AAC(Advanced Audio Coding),这是 ISO/IEC 标准的一部分。
  • 即使文件扩展名是 .mp4,只要音轨是 MP3,macOS/iOS 会静音或直接忽略音频流

✅ 验证:你在 Windows 上用 VLC 可能能听到声音(因为 VLC 自带解码器),但在 iPhone 或 Mac 的"视频"App、Safari、QuickTime 中无声。

解决方案

转换命令为:

复制代码
ffmpeg \
  -i input_kazam_v.mp4 \
  -c:v libx264 \
  -profile:v baseline \
  -level 3.1 \
  -pix_fmt yuv420p \
  -c:a aac \
  -b:a 128k \
  -movflags +faststart \
  -y output_apple_compatible.mp4

最后:

这是验证输出文件兼容性的命令,

ffprobe -v quiet -show_streams yourVideoName.mp4

可以把输出交给AI,它会继续帮你。

相关推荐
chem41112 小时前
linux 海报墙
linux·运维·服务器
daad7772 小时前
openssl.build
linux
蜡台2 小时前
window11 安装WSL 和 Ubuntu-24.04, Vscode 中使用WSL
linux·vscode·ubuntu·wsl
Qt程序员2 小时前
Linux .so 动态库:底层原理
linux·c++·内核·动态库
乌萨奇也要立志学C++2 小时前
【Linux】线程池(一)C++ 手写线程池:基于策略模式实现高性能日志模块
linux·c++·策略模式
拾贰_C2 小时前
【centos7 | Linux | redis】Redis安装
linux·运维·redis
lihaihui19912 小时前
Linux C++知识梳理
linux·c++
浩子智控2 小时前
zynq嵌入式开发(1)—开发准备和流程
linux·嵌入式硬件·硬件架构
Xzq2105092 小时前
Linux 进程管理:从终端控制到守护进程
linux·运维·服务器