This is a great post; we do almost this exact thing for our training videos.<p>Each online course we teach has its technical lecture/demo portions recorded using the Mac's built-in QuickTime feature for making a screen recording. The Mac is able to record the audio from the same mic in use by GoToWebinar.<p>During various breaks throughout the day, local watchers upload the files to an S3 bucket. Lambda receives an event notice for the new file, runs an elastic Transcoder job to encode for streaming (along with a watermark and thumbnails), and dumps the result into a different bucket. Then it hits an API endpoint for an LTI add-on I wrote for Canvas LMS that we use to manage access to and streaming of the recorded sessions (via CloudFront signed URLs), granting the currently in-session course section access to the video. I have an update I need to finish writing for our LTI tool that will use the thumbnails on the time scrubber bar to help with seeking in each video.<p>It also drops entries in SNS, which pings our chatbot (a Hubot we call Walken) to keep us notified of its progress.<p>Elastic Transcoder is quite fast compared to encoding locally, and this new workflow means I can have hours of videos from each day's session posted and available for streaming within about 20 minutes of the session's end (I upload files during an AM break, at lunch, at the PM break, and at end of day).<p>For our students, it seems like magic. They can spend lunch breaks (2 hours) reviewing video of that morning's sessions to help with anything that they didn't quite "get" during class. We love it, too.