Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Software for producing terminal-based tutorials?
96 points by plg on May 27, 2020 | hide | past | favorite | 41 comments
Prof here. Need to create online lectures for delivery this fall. Course is scientific computing. Plan is video of ipython shell and an editor plus audio of me blathering on. I use a Mac. Suggestions for software for the screen portion? Thx!

Edit: OBS Studio? Screenflow? Camtasia?




Since you mentioned terminal-based tutorials, here's a terminal-based solution.

Most linux systems should include script [1] and scriptreplay[2], which should suit your needs. Here's a complete example of a recorded/replayed session[3].

On MacOS it should be as easy as `script -r <filename>` to record and `script -p <filename>` to replay. YMMV, but I like it for _small_ use-cases, as it puts simplicity and portability over features.

[1] http://man7.org/linux/man-pages/man1/script.1.html

[2] http://man7.org/linux/man-pages/man1/scriptreplay.1.html

[3] https://www.tecmint.com/record-and-replay-linux-terminal-ses...



I've created around 400+ video tutorials with Camtasia, it works well enough and IMO is one of the best all-in-1 screencast recording and editing tools you'll find if you're on Windows or MacOS.

Lately I've been using OBS for recording because I want to use native Linux and Camtasia does not run on Linux. Using a Windows / Mac VM won't work if you want to record your Linux environment.

Then I use DaVanci Resolve to do the video editing part. It hasn't been smooth sailing though. Lots of issues with exporting mp4s when it comes to having audio artifacts that never appeared with Camtasia. It means having to do extra work to render the audio separately as a wave file and stitch together the video with it as an mp4 with a different tool.

I'd pay almost anything within reason for Camtasia on Linux. I tried asking the developers a few times. Even offered to fund the development myself or crowd source the funding with Kickstarter. They don't seem to have any intentions on ever supporting Linux.

The next best thing for screencast video editing is Davinci Resolve IMO. It works on Windows, MacOS and most distros of Linux so I'm doing everything I can to migrate to that tool. In some ways it's a lot better than Camtasia too. It's just super finicky with hardware.


Have you tried HDMI to USB video capture? If you computer has enough power you may pass-thru USB3 and audio into VirtualBox with Windows guest running Camtasia. To avoid extra hardware maybe even VNC would be enough.

That is just a hack idea and I am not Camtasia user yet.


I haven't. Do you mean setting up a 2nd computer to run native Linux as my main box and sending that stream over to Windows to record using a capture card? I was hoping to avoid such a set up because it makes things a lot more complicated and uses much more desk space. It does work tho, I've heard of gamers using that set up for streaming on Twitch.

I've looked into using a 2nd GPU and doing a pass-through with KVM which would let you run a Windows VM with effectively native performance. I'm sure that would be great for editing, but it's the recording the Linux environment outside of the VM that would be the issue. Audio is super sensitive with latency, even as little as 15ms of latency could be enough to kill an audio recording.

Needless to say that's why I'm striving to get DaVinci to work for the editing side of things. It would be so nice to avoid having to do any of the above and just use native Linux straight up with no VMs or secondary machine.


What are some features you like about Camtasia besides the basic recording features? I know there's a lot that Camtasia provides, so I'm curious what you get out of it that other screen recording apps don't include.


It's just the whole package, from recording to exporting.

For editing, Camtasia makes it almost too easy to create nice looking title overlays with backgrounds, dimming / blurring areas, highlights, zooming / panning and other basic effects. Even pretty complicated animations too, without having to mess around with key framing or needing a video editing degree.

For example, I made the intro animation for my Docker course[0] in Camtasia in like 15 minutes by screwing around by dragging sliders around until it looked cool. Of course it's not the best thing ever, but it's one of those tools where things just feel intuitive to use without having to Google anything. That whole video is done with Camtasia too btw.

DaVanci is a much more powerful editor and you can do crazy Hollywood style animations and effects, but for someone who just wants to do typical screencasting edits, it's hard to beat Camtasia's efficiency. I'm sure with enough time you could do those things with DaVinci by making your own custom scripts and effects templates but it will take a decent amount of effort to get there instead of getting all of that out of the box.

I know ScreenFlow is also quite good. Very comparable to Camtasia. Camtasia seems to have better license terms and isn't MacOS exclusive.

There's things like Kdenlive too. I super appreciate the development work they've put into it and I think it'll improve over time, but it's not comparable to Camtasia in terms of usability when it comes to creating nice looking titles, animations, etc. I don't think you'll find anyone who would disagree if they've used both tools for a while.

[0]: https://diveintodocker.com/


Thanks for the context. That intro does look slick!


If OBS works fine and davinci DaVanci is having issues why move to it for screen casting?


OBS is for recording, DaVinci Resolve for editing.


Never used it, but saw it on a couple of tutorials, https://asciinema.org


I use it and it's awesome! It's not just a video, you can copy-paste from it if you want.

Here's another one I want to try for a long time but still haven't (to have a single, animated SVG file, still copy-pastable): https://github.com/nbedos/termtosvg .


I love the ability to pause and cut/paste from the animations.


I also recommend asciinema.

A tutorial using asciinema in action.

https://asciinema.org/a/188659

You can't add voice into asciinema itself but a asciinema recording URL would be an excellent handout material (like powerpoint) to give to students. Your students can view Terminal action with very clear text, unlike videos where reading text can be difficult.

Even if you use other method for recording/delivering your voice/audio lecture, including Asciinema replay link would be a huge benefit to students.


I'll also plug a little tool I wrote to supplement asciinema: asciiscript [1]. Basically if you get tired of watching yourself fix typos in your recordings, you can script stuff ahead of time and then record it automatically with asciinema. Although I don't think it works with programs that take input, like a REPL unfortunately.

[1]: https://github.com/christopher-dG/asciiscript


I need this! Thank you!


I was just about to suggest ascicinema.

I think it's excellent but it is limited to just the terminal. I don't think it's possible to incorporate a voiceover or soundtrack which you may sometimes want to do.


Similar to asciinema but you can stream in real-time https://github.com/miguelmota/streamhut


Works great. Record, stop, and it spits out a URL. You can even self-host if you want.


I've made a wrapper for it that works a bit more responsively on mobile https://github.com/enigmacurry/kick-ascii


I like OBS as it allows a good amount of customization.

Also allows you to set up your layout for the video-windows, with presets/templates, iirc.

Recommend you have a second screen open on the obs, though, so you can easily manage what’s up or not.

Would also be a good idea to start experimenting early to figure out some good layouts etc depending on how you want to present the material.


+1 for OBS. It's very easy to use (add different inputs and click record). External monitor is a must. A good (as in > $20) microphone is worth investing in to avoid annoying noises, in particular computer fan noise which is likely to be an issue given you'll be recording video.

Just yesterday I was researching how to connect an external camera like Canon EOS M50 to use as a overhead projector (so you can show handwriting/diagrams like a whiteboard), and it seems possible using https://github.com/v002/v002-Camera-Live but I haven't tried yet.

One last recommendation (to the OP) — keep the videos short. Video is great as the introduction material and to show more complicated bits, but if you can use text + code samples, I think you students will appreciate.


By default, macOS ships with a Screenshot utility (Applications > Utilities > Screenshot).

It can capture PNG files or record the whole screen or a portion of it and generate a video file from the whole session.

https://support.apple.com/guide/mac-help/take-screenshots-or...


If you want to stick with what’s on your Mac, you can screen record with QuickTime. If you need to speak during the recording, there’s an option for capturing audio while you record the screen. Alternatively, you can record the screen with QuickTime, import the video into iMovie, then add an audio track after the fact. This can be a particularly nice approach if you’re good at scripting your way through a video, plus it allows you the ability to add some freeze-frames when you need more time to explain than you have video.


In addition to recording, you may want to make some stills for download or for custom formatting, highlighting, etc. You can use Carbon - https://carbon.now.sh/ - which will do some auto formatting, but allow you to override. This is a bit better than just screen-shooting the IDE.

You may not want to just make one big long video - its hard to follow and then find specific key points in time. Unless you are showing a lot of interactive things and just input/output, copy and paste-able code is going to be easier for students to see and adopt. You may want more of a long tutorial document with small videos where it makes sense or you want to show something interactive.

In addition, its a lot more editing if you want something good without mistakes, etc (there are a lot of videos from big name schools online where professors do not correct themselves and just post the single unedited take). I would actually use video selectively. If you want students to easily run something you may want to utilize one of the many only IDEs that can execute code.

Depending on the tools available from your school or what you can find online you can make something very useful and interactive or you could try to use something like https://www.adaptlearning.org/


I record with Screenflow. It is much simpler (read: slimmer feature set) than Camtasia as well as cheaper.

For as straightforward an application as recording a screen w/ voiceover, there aren't many bad options. Personally, what I like about Screenflow is that it is easy to record straight to a timeline. I.E. I do a take, it saves to the timeline in Screenflow, I cut out the pauses/mistakes/dead air, or split a clip to redo audio or video for a particular section. Once satisfied, I move onto recording the next chunk, it's quite streamlined compared to recording in one app and then editing in another.

Egghead.io has a few free resources for their instructors, I'd recommend checking them out for some practical tips.

https://egghead.io/courses/record-badass-screencasts-for-egg...

https://egghead.io/articles/recording-a-great-coding-screenc...


I've given some live showcasing/presentations with the help of https://github.com/paxtonhare/demo-magic to smooth over parts that are either time consuming, or not error-proof (e.g. networking and such). It might be useful here as well?


Demo magic is a good tool. I used it for recording a video course. But here's one minor caveat: there's no hint for what command will be executed next. Sometimes I would start talking about a subject, then hit ENTER to auto-type the next command, only to find that my words were off topic from the current command. My fault, but it was always a pain to recover from.

I still recommend demo magic. But use it with eyes open if you're mistake-prone like me.


If you're wanting to combine that with e.g. asciinema - you can front-load a shell script via `asciinema rec -t "Some Presentation" -c ./presentation.sh`



I've used OBS Studio and Camtasia. They both get the job done, but Camtasia has some nice features that I would miss if I went back to OBS (unless OBS has evolved a lot since 2014).

+1 for Camtasia


Shameless plug, and a little tangential to your question, but I created an interactive training/presentation tool based on the Scala REPL: https://github.com/marconilanna/REPLesent

I believed someone created a Python port inspired by it.


https://nodeschool.io/building-workshops.html

I think it's mostly specific to node, but I found this to be a great format for learning


Streamlabs OBS is amazing, it looks like they just had a release for Mac!

https://blog.streamlabs.com/streamlabs-is-live-on-mac-ff543b...


For code + video, check out Paircast: http://paircast.io. Unfortunately no terminal support yet.


VideoLan has a screen capture function. You can capture terminal window with VLC.


I have using loom and its working fine so far. Very easy to share.


hmmm can't you screen record using Quicktime? Although, if this is for a lecture, you might have to overlay a layer of audio on top. But i'm not 100% sure about this, best of luck.


ncurses library for sure!


love ncurses! :D


Do you need audio?




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: