How to put a tech talk on-line

pjf on 2008-06-11T04:25:29

brian d foy asked in his use.perl blog:

I haven't had time to figure out how to put the slides and audio together in one package. Has anyone done that before?

That would be me.

I've even had a good rant about how hard it is.

Slideshare
Put simply, if you're using slideshare, and your talk is short, and you move through your slides relatively slowly, and you have somewhere to host the audio, then using slideshare's "slidecasting" options is fine. I've got an example with one of my own talks on hiveminder.

If any of those conditions aren't true, then unless SlideShare's slidecasting software has become significantly better, avoid them. SlideShare is particularly bad if you have lots of fast slide transitions, because it only tries to cache "one frame ahead", and depending upon network conditions whoever is watching your slidecast may hit that frame before it's fully loaded, in which case it just gets dropped. I only really consider SlideShare suitable for death-by-powerpoint.

YouTube
These days I do videos, and upload them to youtube. The resolution sucks, and there's a 10 minute time limit, but everyone knows how it works, and it doesn't drop frames.

If you've gone to the effort of putting together a decent movie for youtube, then you can always place the full-resolution copy somewhere for people who care.

Video Production
So, how do you put together the video? For me, it's usually three steps:

1. Record the audio. If you've done this at a life presentation, great, having a real audience laugh at your jokes is fantastic. If not, then sit down with a mike and your slides, and pretend you have an audience. Give yourself a few seconds of complete silence at the start, you'll thank yourself when it comes to doing noise-removal later on.

If you flub while doing the recording, that's fine. Wait to get a few seconds of silence, then count back in with a "one, two, three". This makes it easy to see the flub when editing the soundtrack.

For sound editing, I recommend using audacity. It's free, open source, cross platform, and totally awesome. Edit out your flubs and any other sounds you don't want in your final cut. Do a noise removal and a normalisation on the whole soundtrack if it needs it.

2. Dump the slides as images. This can be really frustrating. I use OpenOffice.org (OOo), which has an "export as png/jpg/etc" feature. However it only exports the current slide, and my talks usually have hundreds. There are some OOo macros about that apparently do the job for you, but I haven't tried them. I don't know why "Export entire document as png/jpg/etc" isn't built into the software.

Instead of using OOo's image export, I use OOo's "Export as PDF" function. It works really well. I then convert the PDF into images, since there are lots of PDF->image converters out there. I personally use ghostscript for this job. Make sure all your images sort correctly in asciibetical order; so the images should be called slide-001.png, slide-002.png. If you just call your images slide-1.png and slide-2.png you'll hit sorting issues once you get to ten slides or more.

3. Make the movie. If you have decent movie-making software, this should be a matter of importing the slides, importing the audio, and moving the slides back and forth until they match the timing you want. This can take a lot of time if you have a lot of slides, audio, or both.

Production Software
If you're using a Mac, you probably have some awesome video editing software installed which does the job for you; Macs seem to be good at that. If you're using Linux, there seems to be a huge number of FOSS video editing solutions with great reviews.

If you're using Windows, then don't use Windows Movie Maker. You'll get about half way through your editing process, and it will die horribly. Really, it's awful.

I use CyberLink Power Director, because it came bundled with a camera I purchased a while ago. It's more suited to taking the video of your child riding a bike, adding some music and titles and burning onto DVD, but it does an okay job with talks production.

The export features on Power Director are awful, they all produce massively huge files (because that's what DVDs want), or crappy resolution files (designed for mobile devices), or produce audio artefacts when encoding(!), or want to use a widescreen aspect ratio (because you'll be playing your DVDs on your TV), or run incredibly slowly. With enough screwing around I found I could get it to use the xVid encoders which I probably installed from the Combined Community Codec Pack, which are fast and awesome and let me specify exactly what I want.

Now what?
Once your talk is exported, upload it to youtube, and publicise it. I recommend embedding it into one of your own pages, and then at the very least submitting that page to digg and stumbleupon. I recommend this over publicising the youtube page directly because it gives you more control over your content. It's much easier to provide a link to your other presentations, a download link, a list of further resources, or anything else when you control the page your viewers will be going to.

And that ends my not very brief write-up on how to put a talk on-line. If you want to see some that I've done myself, you can find an index on my talks page. My most popular so far (with over 100,000 views) has been fixing the web with greasemonkey.


Screencasting your tech talk

renodino on 2008-06-11T16:42:20

Note: this is for Windows

I've recently been playing w/ screencasting, and I gotta say, its pretty fuggin kewl. The s/w is FOSS, not as spit & polish as commercial stuff, but very effective.

Obviously, you'll need a mic and whatever presentation s/w you use; note that the codec for this is for fairly static content, so avoid including Indiana Jones action sequences in your presentation!

To setup for screencasts:

  1. Download/install MSU Screen Capture Lossless Codec
  2. Download/unbindle VirtualDub (current version 1.78)
  3. Download/unbundle CamStudio (current 2.5 beta 1 release)
  4. Adjust your display settings to 16 bit color
  5. Start CamStudio by clicking on Recorder.exe in the CamStudio folder
  6. Click the Region menu item and then select Fixed Region..
  7. Set fixed region to 800x600 (or smaller if you wish; 800x600 worked well for me)
  8. Click the Options -> Audio Options -> Audio Options for Microphone
    • select "22.05 kHz, mono, 16-bit" from the Recording Format drop down
    • click the "Choose Compressed Format" and Choose "PCM" from the Format drop down
    • click OK
  9. Click Options -> Video Options
    • Select "Microsoft Video 1" for the Compressor dropdown
    • Slide "Quality" to a setting of 80
    • set "Set Key Frames Every" to 150
    • set Framerates: "Capture Frames Every" to 66
    • set Framerates: "Playback Rate" to 15
    • make sure "Auto-Adjust" is unchecked
    • click OK
  10. Click the round red Record button when you're ready to record
    • a region selector will popup; move it to whereever you want the capture region on your screen
    • once you've placed the capture region, recording will run until you click either the Pause or Stop button.
    • as you open applications on your screen, you'll have to drag them into the region, and possibly resize them to fit, in order for them to be captured. Note that audio is captured during the entire recording (assuming you've got a mic enabled)
    • If you're recording something thats going to be static for awhile, its a good idea to hit Pause to skip over it, then hit record again when you're ready to continue.
  11. Once you've Stop'ed recording, a file save dialog opens and you can enter the name of the AVI file to save the capture to.
  12. After you've saved the file, close CamStudio, and open VirtualDub (by clicking on VirtualDub.exe in its folder)
  13. Select File -> Open video file...
    • a file dialog opens; select the AVI file you just recorded
  14. Select Video menu itme and make sure "Full Processing" is checked
  15. Select Video->Compression...
    • select "MSU Screen Capture Lossless Codec" from the dropdown list
    • set the "Force keyframes every" value to 150; make sure the checkbox is checked.
    • click OK
  16. Select Audio and make sure "Full processing mode" is checked
  17. Select Audio -> Compression...
    • select MPEG Layer 3 from the left hand list
    • then select "24kBit, 22.050 kHz, Mono" from the right hand list
    • click OK
  18. Select File -> Save As AVI...
    • the file save dialog opens; enter the filename you want to save as (different than the input filename)
    • click OK
  19. A dialog will open displaying the compression progress, and the window will fastforward through your video as it recompresses.
  20. When it finishes, you're done! You may want to check the file sizes of the original and the compressed version and see the (astounding) compression ratio. You may also want to view the compressed version to double check its ok.

Once you've got the compressed AVI, you can convert it to WMV using Window Movie Maker (tho I haven't tried that yet) or another converter (google up "avi to wmv"), but the quality tends to degrade a lot. CamStudio also provides a SWF converter, tho I haven't yet tried it with the Screen Cast Codec. With the original codec, the number of swf files was huge; hopefully the better codec with few keyframes will reduce the number of flash frames.

But the AVI file will likely be reasonable size; I recently did a 6.5 minute screencast with lots of keyboard/GUI interaction + audio that was only 13Meg (which sounds like a lot, but for video, thats pretty damn good.)

Then you'll just need to find a website to host it.

BTW: if you google up CamStudio you should find dozens of screencasts on how to use it.

I'd love to see the Perl community jump all over this tech; I wish I had more time to whip up some screencasts for some of my CPAN goods.