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,但:

  • 视频编码 可能是 VP8、VP9 或非标准 H.264 profile;
  • 音频编码 可能是 Opus、Vorbis 等开源格式,而非 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,它会继续帮你。

相关推荐
律宏阔12 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔12 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴12 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
用户21816970493012 小时前
FFmpeg (一)使用opencv实现马赛克
ffmpeg
大熊猫侯佩13 小时前
macOS27 上可变界面尺寸 iOS App 揭秘
macos·ios·swiftui
tangzzzfan13 小时前
把 ADB 装进 macOS app
macos
乱码三千13 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei3713 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei3713 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei3713 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化