通过编辑文件加速 ASCIInema

问题描述 投票:0回答:4

我正在使用 ASCIInema
我试着加快速度。

asciinema --speed
解决了这个问题。但是如何在
file.cast
本身设置速度,以便可以发布并且用户无需额外参数即可执行
asciinema play

json performance asciinema
4个回答
15
投票

为了使速度变化持久,您需要调整投射文件中每个事件的时间。

@kyb 提出的基于 jq 的解决方案是一种方法。另一种方法是使用此命令重新录制演员表:

asciinema rec -c 'asciinema play -s 4 file.cast' faster-file.cast
这将创建一个新的录音,但它不会录制新的交互式外壳,而是录制旧演员的加速播放。

您不需要 jq,但缺点是

它不是即时的 - 它需要与以所需速度播放一样多的时间。


10
投票
我找到了一个简单的方法:用

jq

编辑文件:

  • 在bash中

    cat file.cast | { read; echo "$REPLY"; jq -c '.[0]=.[0]/4'; } > fast.cast
    
    
  • 在鱼中

    cat file.cast | begin read; echo "$REPLY"; jq -c '.[0]=.[0]/4'; end > fast.cast
    
    

read

 代表读取包含 json 对象的第一行 - 有关此转换的简短描述,该对象不应传递给 
jq
jq
处理数组,第0个元素是时间戳,为了加快回报脚本将每个时间戳除以指定的比率,这里是
4

示例
file.cast


{"version": 2, "width": 182, "height": 28, "timestamp": 1566499237, "env": {"SHELL": "/usr/local/bin/fish", "TERM": "xterm-256color"}} [0.027813, "o", "\u001b]1337;[email protected]\u0007\u001b]1337;CurrentDir=/Users/kyb/devel/git-rev-label\u0007\u001b]1337;ShellIntegrationVersion=6;shell=fish\u0007"] [0.046757, "o", "\u001b]1337;[email protected]\u0007\u001b]1337;CurrentDir=/Users/kyb/devel/git-rev-label\u0007"] [0.050038, "o", "\u001b]0;fish /Users/kyb/devel/git-rev-label\u0007\u001b[30m\u001b(B\u001b[m"] [0.058719, "o", "\u001b[?2004h"] [0.162696, "o", "\u001b]0;fish /Users/kyb/devel/git-rev-label\u0007\u001b[30m\u001b(B\u001b[m"] [0.162909, "o", "\u001b[38;5;237m⏎\u001b(B\u001b[m \r⏎ \r\u001b[K"] [0.164234, "o", "\u001b]133;D;0\u0007\u001b]133;A\u0007\u001b[44m\u001b[30m ~/d/git-rev-label \u001b[42m\u001b[34m \u001b[42m\u001b[30m➦ d0e4dc8 \u001b[30m\u001b(B\u001b[m\u001b[32m \u001b[30m\u001b(B\u001b[m\u001b]133;B\u0007\u001b[K"] [2.316447, "o", "g"] [2.316686, "o", "\b\u001b[38;5;167mg\u001b[30m\u001b(B\u001b[m"] [2.318507, "o", "\u001b[38;5;246mit rev-label\u001b[12D\u001b[30m\u001b(B\u001b[m"] [2.43537, "o", "\u001b[38;5;167mi\u001b[38;5;246mt rev-label\u001b[11D\u001b[30m\u001b(B\u001b[m"] [2.464359, "o", "\u001b[38;5;167mt\u001b[38;5;246m rev-label\u001b[10D\u001b[30m\u001b(B\u001b[m"] [2.464657, "o", "\b\b\b\u001b[38;5;176mgit\u001b[38;5;246m rev-label\u001b[10D\u001b[30m\u001b(B\u001b[m"] [2.599488, "o", "\u001b[38;5;176m \u001b[38;5;246mrev-label\u001b[9D\u001b[30m\u001b(B\u001b[m"] [2.599678, "o", "\b \u001b[38;5;246mrev-label\u001b[9D\u001b[30m\u001b(B\u001b[m"] [2.737237, "o", "r\u001b[38;5;246mev-label\b\b\b\b\b\b\b\b\u001b[30m\u001b(B\u001b[m"] [2.737514, "o", "\b\u001b[38;5;110m\u001b[4mr\u001b[38;5;246m\u001b[24mev-label\b\b\b\b\b\b\b\b\u001b[30m\u001b(B\u001b[m"] [2.817482, "o", "\u001b[38;5;110m\u001b[4me\u001b[38;5;246m\u001b[24mv-label\b\b\b\b\b\b\b\u001b[30m\u001b(B\u001b[m"] [3.033631, "o", "\u001b[38;5;110m\u001b[4mv\u001b[38;5;246m\u001b[24m-label\b\b\b\b\b\b\u001b[30m\u001b(B\u001b[m"] [3.033812, "o", "\b\b\b\u001b[38;5;110mrev\u001b[38;5;246m-label\b\b\b\b\b\b\u001b[30m\u001b(B\u001b[m"] [3.951287, "o", "\u001b[38;5;110m-label\u001b[30m\u001b(B\u001b[m"] [4.581453, "o", "\r\n"] [4.581681, "o", "\u001b[30m\u001b(B\u001b[m\u001b[?2004l"] [4.58185, "o", "\u001b]133;C;\u0007"] [4.582158, "o", "\u001b]0;git /Users/kyb/devel/git-rev-label\u0007\u001b["] [4.582306, "o", "30m\u001b(B\u001b[m\r"] [4.689255, "o", "brantozyabra-c136-gd0e4dc8\r\n"] [4.690204, "o", "\u001b]1337;[email protected]\u0007\u001b]1337;CurrentDir=/Users/kyb/devel/git-rev-label\u0007"] [4.690383, "o", "\u001b[?2004h"] [4.772316, "o", "\u001b]0;fish /Users/kyb/devel/git-rev-label\u0007\u001b[30m\u001b(B\u001b[m"] [4.772502, "o", "\u001b[38;5;237m⏎\u001b(B\u001b[m \r⏎ \r\u001b[K\u001b]133;D;0\u0007\u001b]133;A\u0007\u001b[44m\u001b[30m ~/d/git-rev-label \u001b[42m\u001b[34m \u001b[42m\u001b[30m➦ d0e4dc8 \u001b[30m\u001b(B\u001b[m\u001b[32m \u001b[30m\u001b(B\u001b[m\u001b]133;B\u0007\u001b[K"] [6.901142, "o", "\r\n\u001b[30m\u001b(B\u001b[m\u001b[30m\u001b(B\u001b[m"] [6.901321, "o", "\u001b[?2004l"]

fast.cast


{"version": 2, "width": 182, "height": 28, "timestamp": 1566499237, "env": {"SHELL": "/usr/local/bin/fish", "TERM": "xterm-256color"}} [0.00695325,"o","\u001b]1337;[email protected]\u0007\u001b]1337;CurrentDir=/Users/kyb/devel/git-rev-label\u0007\u001b]1337;ShellIntegrationVersion=6;shell=fish\u0007"] [0.01168925,"o","\u001b]1337;[email protected]\u0007\u001b]1337;CurrentDir=/Users/kyb/devel/git-rev-label\u0007"] [0.0125095,"o","\u001b]0;fish /Users/kyb/devel/git-rev-label\u0007\u001b[30m\u001b(B\u001b[m"] [0.01467975,"o","\u001b[?2004h"] [0.040674,"o","\u001b]0;fish /Users/kyb/devel/git-rev-label\u0007\u001b[30m\u001b(B\u001b[m"] [0.04072725,"o","\u001b[38;5;237m⏎\u001b(B\u001b[m \r⏎ \r\u001b[K"] [0.0410585,"o","\u001b]133;D;0\u0007\u001b]133;A\u0007\u001b[44m\u001b[30m ~/d/git-rev-label \u001b[42m\u001b[34m \u001b[42m\u001b[30m➦ d0e4dc8 \u001b[30m\u001b(B\u001b[m\u001b[32m \u001b[30m\u001b(B\u001b[m\u001b]133;B\u0007\u001b[K"] [0.57911175,"o","g"] [0.5791715,"o","\b\u001b[38;5;167mg\u001b[30m\u001b(B\u001b[m"] [0.57962675,"o","\u001b[38;5;246mit rev-label\u001b[12D\u001b[30m\u001b(B\u001b[m"] [0.6088425,"o","\u001b[38;5;167mi\u001b[38;5;246mt rev-label\u001b[11D\u001b[30m\u001b(B\u001b[m"] [0.61608975,"o","\u001b[38;5;167mt\u001b[38;5;246m rev-label\u001b[10D\u001b[30m\u001b(B\u001b[m"] [0.61616425,"o","\b\b\b\u001b[38;5;176mgit\u001b[38;5;246m rev-label\u001b[10D\u001b[30m\u001b(B\u001b[m"] [0.649872,"o","\u001b[38;5;176m \u001b[38;5;246mrev-label\u001b[9D\u001b[30m\u001b(B\u001b[m"] [0.6499195,"o","\b \u001b[38;5;246mrev-label\u001b[9D\u001b[30m\u001b(B\u001b[m"] [0.68430925,"o","r\u001b[38;5;246mev-label\b\b\b\b\b\b\b\b\u001b[30m\u001b(B\u001b[m"] [0.6843785,"o","\b\u001b[38;5;110m\u001b[4mr\u001b[38;5;246m\u001b[24mev-label\b\b\b\b\b\b\b\b\u001b[30m\u001b(B\u001b[m"] [0.7043705,"o","\u001b[38;5;110m\u001b[4me\u001b[38;5;246m\u001b[24mv-label\b\b\b\b\b\b\b\u001b[30m\u001b(B\u001b[m"] [0.75840775,"o","\u001b[38;5;110m\u001b[4mv\u001b[38;5;246m\u001b[24m-label\b\b\b\b\b\b\u001b[30m\u001b(B\u001b[m"] [0.758453,"o","\b\b\b\u001b[38;5;110mrev\u001b[38;5;246m-label\b\b\b\b\b\b\u001b[30m\u001b(B\u001b[m"] [0.98782175,"o","\u001b[38;5;110m-label\u001b[30m\u001b(B\u001b[m"] [1.14536325,"o","\r\n"] [1.14542025,"o","\u001b[30m\u001b(B\u001b[m\u001b[?2004l"] [1.1454625,"o","\u001b]133;C;\u0007"] [1.1455395,"o","\u001b]0;git /Users/kyb/devel/git-rev-label\u0007\u001b["] [1.1455765,"o","30m\u001b(B\u001b[m\r"] [1.17231375,"o","brantozyabra-c136-gd0e4dc8\r\n"] [1.172551,"o","\u001b]1337;[email protected]\u0007\u001b]1337;CurrentDir=/Users/kyb/devel/git-rev-label\u0007"] [1.17259575,"o","\u001b[?2004h"] [1.193079,"o","\u001b]0;fish /Users/kyb/devel/git-rev-label\u0007\u001b[30m\u001b(B\u001b[m"] [1.1931255,"o","\u001b[38;5;237m⏎\u001b(B\u001b[m \r⏎ \r\u001b[K\u001b]133;D;0\u0007\u001b]133;A\u0007\u001b[44m\u001b[30m ~/d/git-rev-label \u001b[42m\u001b[34m \u001b[42m\u001b[30m➦ d0e4dc8 \u001b[30m\u001b(B\u001b[m\u001b[32m \u001b[30m\u001b(B\u001b[m\u001b]133;B\u0007\u001b[K"] [1.7252855,"o","\r\n\u001b[30m\u001b(B\u001b[m\u001b[30m\u001b(B\u001b[m"] [1.72533025,"o","\u001b[?2004l"]
    

4
投票
工具

asciinema-edit 似乎就是这样做的(以及 asciinema 录音的其他后处理)。来自自述文件:

EXAMPLES: Make the whole cast ("123.cast") twice as fast: asciinema-edit speed --factor 2 ./123.cast Cut the duration in half: asciinema-edit speed --factor 0.5 ./123.cast
    

0
投票
我不知道这是否仍然相关。但如果是这样,那么我的简单解决方案就是这样。考虑下面的命令:

asciinema rec -i 1.5 john.cast
这个有什么作用?

    记录 asciinema 演员表
  1. 将录制过程中的等待时间或空闲时间限制为 1.5 秒(即使您 20 分钟没有与终端交互,asciinema 也会在播放过程中将该等待时间缩短为 1.5 秒。
  2. 将录音保存到 john.cast
我希望这对某人有帮助。 Asciinema 是一个非常棒的工具。

© www.soinside.com 2019 - 2024. All rights reserved.