通过编辑文件

时间:2019-08-22 19:13:43

标签: json performance asciinema

我正在使用ASCIInema
我尝试加快速度。 asciinema --speed解决了这个问题。但是,如何在file.cast本身中设置速度,以便可以发布速度并且用户可以在没有附加参数的情况下执行asciinema play

3 个答案:

答案 0 :(得分:2)

工具asciinema-edit似乎可以做到这一点(在其他有关后遗症录音的后期处理中)。从自述文件:

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

答案 1 :(得分:1)

我找到了一种简单的方法:使用jq编辑文件:

  • 在鱼里
cat file.cast | begin read; echo "$REPLY"; jq -c '.[0]=.[0]/4'; end > fast.cast
  • 扑朔迷离
cat file.cast | { read; echo "$REPLY"; jq -c '.[0]=.[0]/4'; } > fast.cast

read代表读取包含json对象的第一行-有关此强制转换的简短说明,不应将此对象传递给jqjq处理数组,第零个元素为时间戳,以加快回收率脚本将每个时间戳按指定比例划分,这里为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;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"]

答案 2 :(得分:1)

要使速度变化持久,您需要调整演员表文件中每个事件的时间。

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

asciinema rec -c 'asciinema play -s 4 file.cast' faster-file.cast

这将创建一个新的录音,但不是录制新的交互式外壳,而是录制旧演员的加速回放。

您不需要jq,但是缺点是它不是即时的-以所需的速度播放需要花费很多时间。