Have you ever felt the need to capture a never-ending set of screen shots from a move?

Neither had I.

But ...

Step 1: Catching the .WAV (Audio Files)

After spending 5 days lecturing on C/C++, the plan was to turn 23 GB of captured .WAV audios into a full blown video creation. All I had to do was to slap a few hundred screens over 40 hours of my geeky nattering, and I could take the locus straight to post production.

Step 2: Exporting MP4 from PowerPoint (Video Files)

Microsoft's PowerPoint belched out the video files with their new "brand" of increasingly kludgey results (i.e. exported videos enjoyed random screen drops & blackouts - honestly people - where do they get their developers from these days?)

With a little trial & error however, we were able to divine the optimal timing for a reasonable "Step 3" frame extraction.

Step 3: Command-Line Quality

After converting the PowerPoint presentation into an MP4 file, the only chore remaining was to slice up the "1 slide per 5 second" default video file option into about 500 individual screen shots.

Resisting the temptation to write some code to slice up the video ourselves, we were only too happy to discover that we could use ffmpeg!

Command Line Options

Frequent visitors to this blog will recall that - in a previous article - we sang all praises to ffmpeg. --A command line tool, the ease in which we were able to export JPEG images from an MP4 presentation deserves turning the canting up an octave, or three:

ffmpeg -i Cpp1000.mp4 -ss 00:04 -r 0.20 "cpp1000_%04d.jpg"

By way of a demystification of the above, we should note that the "-i" option is for "input." Specifically, the input video file.

At the end of the above we see the output file, with a refreshingly "stdlib" way of automatically providing a 1's based name for each JPG file.

Curiously, in the middle we see the "-r command." Unexpectedly, the corresponding mnemonic for us to capture is the reverse of how one would expect to denote the frame-capture rates. (i.e. Uing "1 / NumSeconds" to set the frame-capture ratio desired (e.g. a value of '1' saves a frame every second, whereas '0.5' saves a frame every 2 seconds, '0.2' every 5 seconds, '0.1' every 10 seconds, '0.0167' for 60 seconds (etc.))

Finally, using '-ss' will allow us to jump to a starting time to begin our first screen capture. --In my case, an -ss of 4 seconds was required because only the last-second of our PowerPoint video conversion was usually good enough for human consumption.

No matter if we are testing, logging, or 'blogging, many know the need to unify events between many people, places, and platforms.

Moreover, having the need to aggregate events both via the 'web, as well as via other applications (like ezlog & AboutTime!), we felt the need to create a web-based aggregator that better manages that gap between "api" and "user."

Appropriately known as "Turnstile," the three entry points to this new project are:

api.phpindex.phpturnstile.php

Follow the link below to re-use the PHP for the Turnstile Project, as desired.

We hope not - the idea is for us to share some "Know How." Those hard-won consulting & educational insights. --The type of information that takes years of practice to acquire, yet topics that we all might like to share with others.

Destined to be the sub-title - as well as the educational theme - across several new & target-rich topical areas, we hope that you might enjoy our introductory set of interview questions + in-depth answers on Python 3.