关于 asciinema
asciinema 将终端操作录制为纯文本文件,可以在任何地方播放和分享。支持嵌入到网页或生成视频,是制作教程和演示的理想工具。
主要功能
- 01将终端会话录制为文本格式
- 02播放和回放已录制的终端操作
- 03将录制内容分享到在线平台或嵌入网页
适用场景
- 01创建命令行工具和开源项目的演示视频
- 02编写包含可交互演示的技术文档
- 03记录和分享故障排查的完整过程
安装
选择你的系统或包管理器,复制命令到终端运行。
安装完成后运行asciinema --version确认安装成功。
命令示例
常用命令按使用顺序排列。
详细介绍
asciinema
asciinema(又称 asciinema CLI 或 asciinema recorder)是一款用于录制和实时流式传输终端会话的命令行工具。
与典型的屏幕录制软件不同,后者会将屏幕的视觉输出录制为体积庞大的视频文件(.mp4、.mov),asciinema CLI 在终端中运行,将终端会话输出捕获为轻量级录制文件,采用 asciicast 格式(.cast),也可以实时向观看者直播。
录制内容可以在终端中回放、嵌入网页(使用 asciinema player),或发布到 asciinema server(例如 asciinema.org)以便进一步分享。实时流允许观看者实时观看终端会话。
asciinema 可在 GNU/Linux、macOS 和 FreeBSD 上运行。
主要功能:
- 将终端会话录制到文件,可选择捕获键盘输入 以及配置要捕获的环境变量,
- 在终端中回放录制内容,支持调整速度、循环播放、限制空闲时间、逐步导航、在标记处暂停,以及可选的终端自动调整大小,
- 将终端会话本地和远程实时流式传输给多个观看者,并支持内置 HTTP 服务和嵌入式网页播放器,供局域网或本地主机观看,
- 组合会话:录制到文件的同时,本地和远程流式传输,
- 轻量级 asciicast 录制格式,原生支持读取和写入 zstd 压缩(
.zst)录制文件(平均大小为原始文件的 8%), - 将 asciicast v1/v2/v3 转换为 asciicast v2/v3、原始终端输出或纯文本,
- 将多个录制文件拼接为一个,并自动调整时间,
- 会话进行中的控制:通过可自定义按键绑定暂停/恢复捕获,并即时添加标记,
- 捕获会话元数据,包括终端大小、终端主题、命令和标题,
- 支持配置文件,可设置默认录制命令、捕获选项、播放速度、空闲时间限制、通知和按键绑定等,
- 无头模式、可配置的终端窗口大小,以及退出状态传递,适用于脚本和 CI 友好的录制与流式传输,
- 转换时支持 stdin/stdout,并支持从本地文件、stdin 或 HTTP(S) URL 回放,
- 与 asciinema server 集成,例如 asciinema.org,支持上传、托管、远程实时流式传输、可自托管服务、可见性控制、描述和同步音频 URL。
要录制会话,请在 shell 中运行以下命令:
asciinema rec demo.cast
要通过内置 HTTP 服务流式传输会话,请运行:
asciinema stream -l
要通过中继(asciinema server)流式传输会话,请运行:
asciinema stream -r
请参阅入门指南,了解安装和使用概览。
构建
如需下载源代码、构建 asciinema 二进制文件并将其安装到
$HOME/.cargo/bin,只需运行:
cargo install --locked --git https://github.com/asciinema/asciinema
这需要 Rust 工具链(1.82 或更高版本)和 Cargo,可通过系统软件包管理器或 rustup 安装。
安装后,请确保 $HOME/.cargo/bin 位于 shell 的 $PATH 中。
或者,也可以从本地检出版本构建。首先下载源代码:
git clone https://github.com/asciinema/asciinema
cd asciinema
推荐使用 Nix 开发 shell 来获取工具链,它会提供所需的一切,开箱即用:
nix develop
如果不使用 Nix,则需要像上文所述安装 Rust 和 Cargo。
然后使用以下命令构建二进制文件:
cargo build --release
这会在 target/release/asciinema 生成二进制文件。你可以直接将该文件复制到 $PATH 中的某个目录。
要生成 man 手册页和 shell 补全文件,请将 ASCIINEMA_GEN_DIR 设置为存放这些文件的路径。例如:
ASCIINEMA_GEN_DIR=/foo cargo build --release
上述命令会构建二进制文件,并将 man 手册页放入 /foo/man/,将 shell 补全文件放入 /foo/completion/ 目录。
说明
目前不支持 Windows。请参阅 #467。 你可以改用 PowerSession。
开发
所有开发工作都在 develop 分支上进行。该分支包含当前一代(3.x)的 asciinema CLI,使用 Rust 编写。
上一代(2.x)使用 Python 编写,可在 python 分支中找到。
有关工具链设置和构建说明,请参阅构建。使用 cargo test 运行测试套件。
如果你想提出或提交更改,请先阅读贡献指南。
捐赠
asciinema 的持续发展依赖捐赠和赞助。
asciinema 的赞助方:
咨询服务
如果你有兴趣根据自身需求集成或定制 asciinema,请查看 asciinema 咨询服务。
许可证
© 2011 Marcin Kulik。
所有代码均采用 GPL v3 或更高版本许可。详情请参阅 LICENSE 文件。