All Projects → dhobsd → castty

dhobsd / castty

Licence: other
A CLI tool to record audio-enabled screencasts of your terminal, for the web.

Programming Languages

c
50402 projects - #5 most used programming language
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
Makefile
30231 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to castty

Asciinema
Terminal session recorder 📹
Stars: ✭ 9,880 (+8964.22%)
Mutual labels:  recording, recorder, asciicast, terminal-recording
Asciinema Player
asciinema player is an open-source terminal session player written in Javascript and Rust/WASM. Unlike other video players asciinema player doesn't play heavy-weight video files (.mp4, .webm etc) and instead plays light-weight terminal session files called asciicasts.
Stars: ✭ 1,948 (+1687.16%)
Mutual labels:  recording, asciicast
react-native-recording
React Native audio recording module used for DSP with Android + iOS
Stars: ✭ 86 (-21.1%)
Mutual labels:  recording, audio-recording
Chipkizi
a recording app for up and coming artists
Stars: ✭ 26 (-76.15%)
Mutual labels:  recording, recorder
ZFScreenRecorder
录屏,支持暂停、取消
Stars: ✭ 38 (-65.14%)
Mutual labels:  recording, recorder
Screenity
The most powerful screen recorder & annotation tool for Chrome 🎥
Stars: ✭ 6,229 (+5614.68%)
Mutual labels:  recorder, screencast
Tracker
Even the best of apps have their issues
Stars: ✭ 113 (+3.67%)
Mutual labels:  recorder, screencast
Recorder
html5 js 录音 mp3 wav ogg webm amr 格式,支持pc和Android、ios部分浏览器、和Hybrid App(提供Android IOS App源码),微信也是支持的,提供H5版语音通话聊天示例 和DTMF编解码
Stars: ✭ 2,891 (+2552.29%)
Mutual labels:  recording, recorder
Scrcast
Drop-in Android Screen Recording Library
Stars: ✭ 178 (+63.3%)
Mutual labels:  recording, screencast
Keypress Osd
This program is an On-Screen Display or a Heads-Up Display for keys. It displays every key press at a clearly visible text size. It is developed for people with poor eye sight. It is meant to aid desktop computer usage. It is especially useful while chatting or for occasional typing. The user no longer has to squint or zoom in the entire screen to see what s/he writes in small text fields.
Stars: ✭ 131 (+20.18%)
Mutual labels:  recording, screencast
Termtosvg
Record terminal sessions as SVG animations
Stars: ✭ 9,310 (+8441.28%)
Mutual labels:  recording, recorder
shellcast
Shellcasting client and server
Stars: ✭ 26 (-76.15%)
Mutual labels:  tty, screencast
asciinema-rs
Asciinema client written in Rust
Stars: ✭ 81 (-25.69%)
Mutual labels:  tty, asciicast
Gors
go实现的终端录屏程序
Stars: ✭ 19 (-82.57%)
Mutual labels:  tty, recording
Webtty
Share a terminal session over WebRTC
Stars: ✭ 2,380 (+2083.49%)
Mutual labels:  tty
OBS Settings Manager
Backup your OBS Studio profiles and manage them in an easy, user friendly way.
Stars: ✭ 20 (-81.65%)
Mutual labels:  recording
Asciinema Edit
asciinema casts post-production tools
Stars: ✭ 187 (+71.56%)
Mutual labels:  tty
Tty Table
A flexible and intuitive table generator
Stars: ✭ 161 (+47.71%)
Mutual labels:  tty
tallboy
Declarative API for drawing unicode/ascii character tables in crystal lang
Stars: ✭ 49 (-55.05%)
Mutual labels:  tty
networker
🔧 A simple CLI tool for various networking operations
Stars: ✭ 20 (-81.65%)
Mutual labels:  tty

CasTTY

CasTTY is a program similar to ttyrec and asciinema that makes it easy to create audio-enabled, terminal-based screencasts for publication on webpages. It was originally a fork of ttyrec, but has since effectively been rewritten from scratch.

There may be bugs. Feel free to contribute patches or file an issue!

You probably want to see what you get after you use this.

Compatibility

I've tested CasTTY on macOS Sierra and Linux. It should work on other systems, but if not, please feel free to send a patch. It probably can't record if you don't have a microphone, unless you have some weird audio mixing setup.

Building

Dependencies

It depends on libsoundio. Ubuntu 16.04 seems to ship a broken version of libsoundio that depends on a version of JACK that doesn't work. This is fixed in the libsoundio repo, but you will have to build it yourself.

CasTTY also depends on LAME (and in particular, libmp3lame) for on-the-fly MP3 encoding. It is possible to compile without LAME (and therefore without mp3 support) by modifying config.mk to contain WITH_LAME = no.

There are no UI build dependencies because I find that idea a little silly.

Make

To build, simply run make once dependencies have been installed. If they were installed to a location other than /usr/local/, you will have to edit the Makefile.

Usage

usage: castty record [-acdelrt] [out.json]
 -a <outfile>   Output audio to <outfile>. Must be specified with -d.
 -c <cols>      Use <cols> columns in the recorded shell session.
 -D <outfile>   Send debugging information into <outfile>
 -d <device>    Use audio device <device> for input.
 -e <cmd>       Execute <cmd> from the recorded shell session.
 -l             List available audio input devices and exit.
 -m             Encode audio to mp3 before writing.
 -r <rows>      Use <rows> rows in the recorded shell session.
 -R             Use a raw sound device.
 -t <title>     Title of the cast.

 [out.json]     Optional output filename of recorded events. If not specified,
                a file "events.json" will be created.

To list usable input devices for recording, just run castty record -l. Output will look something like this:

Available input devices:
   0: Built-in Microphone 44100Hz
      castty -d 'AppleHDAEngineInput:1B,0,1,0:1' -a audio.raw

The -d 'AppleHDAEngineInput:1B,0,1,0:1' argument can be pasted directly to CasTTY to choose that device for recording. The audio format and sample rate CasTTY will use is also provided.

CasTTY supports MP3 output by default, but other encodings may be desirable. Without the -m flag, CasTTY outputs interleaved PCM audio. (CasTTY upgrades mono audio to stereo.)

Utilities like sox may be used to convert the audio into more useful formats for web publication.

% sox -D -r 44100 -e signed -b 16 -c 2 -L audio.raw audio.wav

By default, CasTTY does not record audio and sends its terminal event output to a file called events.js.

Runtime Commands

CasTTY contains a runtime command interface. Commands are entered with the sequence ^a (C-a, Control-a), followed by the command character. Currently supported commands are:

  • ^a: Send a literal ^a to the recorded session.
  • a: Send a literal ^a to the recorded session.
  • m: Mute or unmute the recording. Recording will continue, but without any audio until unmuted.
  • p: Pause or unpause the recording. Neither terminal nor audio will be recorded during the paused period. When unpausing, CasTTY requests the screen to be redrawn. This may cause your terminal buffer to clear.

Miscellaneous

CasTTY does support window resizing. However, because the size of the player is automatically calculated based on the size of the original window, the recorded window size can only ever be as large or smaller than the original window size.

CasTTY supports UTF-8 input.

CasTTY outputs in asciicast v1 format. Its output files should be compatible with the asciinema player (though that player does not support audio).

Web Interface

The ui directory of the repository is a self-contained implementation of a CasTTY player. Utilities used include:

Licenses for all these utilities can be found in their respective repositories and in the LICENSE file in this repository.

To create a cast, simply modify ui/index.html to point to the correct audio file and events.js output from castty.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].