02 August 2013

488. Screencasting on debian wheezy

Update II: An alternative to gnome-screencast + audacity is kazam, which is present in the jessie and sid repos, but NOT in the wheezy repos.

Update:
If you want to draw in a pdf presentation, Xournal is looking pretty good. You can turn off the toolbars as shown here:  http://sourceforge.net/p/xournal/feature-requests/75/

Original post:
It would be nice if we could use the gnome screencasting tool for this, but it doesn't record audio by default. While you can make it do so, there are issues with getting it to stop recording audio. In the end you end up with a continuously growing file even though you've stopped recording.

I had little luck with Istanbul. While it sort of worked, I had issues getting it to stop recording (clicking on the button in the gnome tray produced nothing) a lot of the time.

I also had little luck with recordmydesktop. While it recorded fine, and eventually stopped when asked to, it didn't record sound. You can probably sort that out without too much effort, but yesterday I had to quickly whip together a couple of screencasts for a class I'm teaching, and playing with sound can be an easy way of wasting an afternoon.

In my case I had to narrate a couple of .ps slides I'd prepared with latex.

I went for something less elegant, but which was quick and easy to get started with: gnome screencasting + audacity. I'm in no way the first person to use this, but here's what I did:

0. First install audacity, ffmpeg etc.
I suggest install the newer version of ffmpeg already from the beginning. See step six below to see how to get the newer version via the deb-multimedia repos.

1. Start audacity. Presuming you have your microphone configured and everything, you should be ready to hit record (you might want to set audacity to record mono rather than stereo to save space). Don't do anything at this point though.

2. Open you pdf or ps presentation in evince in another workspace and put it in presentation mode (F5 in evince)

3. Ready? Hit the record button in audacity and switch workspaces. Hit Alt+Ctrl+Shift +R to start recording the screen actions

Your mouse movements will be recorded, so you can point at things as you are talking.

I find it a lot easier to edit sound files than video, so I'd rather have audacity run a bit longer than the video and edit it afterwards.

4. Once you are done, stop the screen recording with Alt+Shift+Ctrl+R, switch back to Audacity and stop the recording. Re-touch your audio in audacity (e.g. trim the beginning and end to match the video), and go to file/export to save it as e.g. wav.


5. Combine sound and video
Merge your screencast (which is in webm format) with your audio:
ffmpeg -i example.wav -i example.webm merged.webm

It takes a while. You can run this in parallel, e.g.
ffmpeg -threads 8 -i example.wav -i example.webm merged.webm

At any rate, you now have a .webm file with sound and video -- this is a format that's handled by html 5, so it should be ok.

If you want to edit the video before merging with audio you can also use OpenShot to e.g. split off the end of the video. I never had much luck with pitivi.

If you know exactly where to cut you can do it very easily with ffmpeg:
ffmpeg -i example.webm -vcodec copy -acodec copy -ss 00:00:00 -t 00:11:39 example_chop.webm

Also, without confirming it, I think the newer versions of ffmpeg automatically run as multi-threaded, whereas the older ones just launch a single thread. Experiment and find out.

6. To make an flv file
To do this successfully I had to use ffmpeg version (1.0.7) in the deb-multimedia repository -- the ffmpeg version (0.8.6) in the wheezy repos is too old. You can use the newer one by adding this to your /etc/apt/sources.list,
deb http://www.deb-multimedia.org wheezy main non-free
followed by running
sudo apt-get update
sudo apt-get install deb-multimedia-keyring
sudo apt-get upgrade && sudo apt-get install ffmpeg

Finally, convert to flv using
ffmpeg -i merged.webm -vcodec libx264 example.flv

No comments:

Post a Comment