[英]Speed-up ASCIInema by editing file
I'm using ASCIInema .我正在使用ASCIInema 。
And I try to speed it up.我尝试加快速度。
asciinema --speed
solves this problem. asciinema --speed
解决了这个问题。 But how to set the speed in the file.cast
itself, so that it could be published and the user can execute asciinema play
without an additional parameter?但是如何在
file.cast
本身中设置速度,以便它可以发布并且用户可以在没有附加参数的情况下执行asciinema play
?
To make the speed change persistent you need to adjust the timing of each event in the cast file.为了使速度变化持续存在,您需要调整投射文件中每个事件的时间。
jq based solution proposed by @kyb is one way. @kyb 提出的基于 jq 的解决方案是一种方法。 Another is to re-record the cast with this command:
另一种是使用以下命令重新录制演员表:
asciinema rec -c 'asciinema play -s 4 file.cast' faster-file.cast
This will create a new recording, but instead of recording a new interactive shell it will record the sped up playback of the old cast.这将创建一个新的录音,但不是录制新的交互式 shell,而是录制旧演员的加速播放。
You don't need jq for this, however the downside is that it's not instant - it takes as much time as the playback at a desired speed.您不需要 jq ,但缺点是它不是即时的 - 它需要与以所需速度播放一样多的时间。
I found a simple way: edit file with jq
:我找到了一个简单的方法:用
jq
编辑文件:
in bash在 bash
cat file.cast | { read; echo "$REPLY"; jq -c '.[0]=.[0]/4'; } > fast.cast
in fish在鱼
cat file.cast | begin read; echo "$REPLY"; jq -c '.[0]=.[0]/4'; end > fast.cast
read
stands to read first line which contains json object - short description about this cast, this object should not be passed to jq
. read
代表读取包含 json 对象的第一行 - 关于此强制转换的简短描述,不应将此对象传递给jq
。 jq
processes arrays, zeroth element is timestamp, to speed up payback script divides every timestamp by a specified ratio, here it is 4
. jq
处理数组,第零个元素是时间戳,为了加快回报脚本将每个时间戳除以指定的比率,这里是4
。
example例子
file.cast
{"version": 2, "width": 182, "height": 28, "timestamp": 1566499237, "env": {"SHELL": "/usr/local/bin/fish", "TERM": "xterm-256color"}}
[0.027813, "o", "\u001b]1337;RemoteHost=kyb@kyb-mbo.local\u0007\u001b]1337;CurrentDir=/Users/kyb/devel/git-rev-label\u0007\u001b]1337;ShellIntegrationVersion=6;shell=fish\u0007"]
[0.046757, "o", "\u001b]1337;RemoteHost=kyb@kyb-mbo.local\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;RemoteHost=kyb@kyb-mbo.local\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;RemoteHost=kyb@kyb-mbo.local\u0007\u001b]1337;CurrentDir=/Users/kyb/devel/git-rev-label\u0007\u001b]1337;ShellIntegrationVersion=6;shell=fish\u0007"]
[0.01168925,"o","\u001b]1337;RemoteHost=kyb@kyb-mbo.local\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;RemoteHost=kyb@kyb-mbo.local\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"]
The tool asciinema-edit seems to do just that (among other post-processing of asciinema recordings).工具asciinema-edit似乎就是这样做的(以及对 asciinema 录音的其他后处理)。 From the README:
从自述文件:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.