5 Tricks for catching up on the Channel 9 event videos for Build 2014

Okay, you've had a week to digest all the video content from Build 2014? Done yet? Me, neither. Well, how about some tricks to make this easier?

I'd written up a few tips and tricks for catching up on Channel 9 event videos back in 2011, this is an update circa 2014.

Trick 1: Subscribe and watch at high speed in VLC

There are a lot of sessions, and watching even at 10% faster makes a difference. I think you'll be surprised at how, with a little practice, you can keep cranking the speed up and absorb the content at 2x or even faster. Note: Every time I tell people about high speed playback, people assume it's going to make the speakers sound like chipmunks. All of the high speed playback options I'm going to show are pitch corrected, so they don't raise the speakers' voices.

If you don't have VLC installed, I highly recommend it. It's lightweight and has a minimal interface, but is packed with codecs and advanced features when you need them. You can install via Chocolatey (cinst vlc), directly from http://www.videolan.org/, or from http://ninite.com.

Run VLC and pop into Playlist mode. You can do that from the View menu, hit Ctrl+L, or click on the Playlist icon at the bottom to do that.

2011-04-21 16h47_08

In the Playlist interface, expand the Internet group and click on + sign to the right of Podcasts.


This brings up a prompt to enter the URL for the feed. Each Channel 9 event has a list of formats available under the "Subscribe to this event" link:

Channel 9 Event - RSS

You have a few options (the types are obvious from the last bit of the URL):

You can enter the format of your choice here - in my case I'm going to pick the MP4 HD feed: http://channel9.msdn.com/Events/Build/2014/RSS/mp4high. However, note that the MP3 format is available. We'll get back to that later.

That grabs the feed and builds a playlist for us, listing all the videos.

Note: nothing's been downloaded at this point, it's just showing the list from the RSS feed.


Now I'll use the search section to filter on ASP.NET because I do love it so.


Here's the key thing - when I double click the video to start streaming it, I'll switch to a faster speed. There are two ways to do that.

The easy way is to use the Playback / Speed menu.


Once you get hooked on this, though, you can use the [ and ] hotkeys (speed up and slow down respectively). Now I'm watching this demo at 2x speed. You might start with 1.5x or so and crank it up as you get more used to it.


Trick 2: Use high speed playback in the Channel 9 player

HTML5 video players in all the new browsers support high speed playback. Here's an example showing the Day 1 Keynote on the Channel 9 site; I've right clicked the video to bring up the context menu and I'm about to kick it up to 2x.


That's it! Easy!

Trick 3: Subscribe to the MP3 feed on Windows Phone 8.1

One of my favorite sleeper features in Windows Phone 8.1 is support for high speed playback in the new Podcasts app. For this one, I wanted to add the MP3 URL for just the Build 2014 event: http://channel9.msdn.com/Events/Build/2014/RSS/mp3

But that's a bit long to type on the phone, so I made a special short URL: http://aka.ms/b14mp3

Then in the Podcasts app, I chose add by URL:


That gave me a list of MP3's. In the podcast options, I can select to have it stream or download them. Now, once I started playing one, I clicked on the little 1.5x thing to the right of the video twice, toggling to 2x speed.


Yee haw!!!


  • David Tesar reminded me that the Moliplayer video player app for Windows Phone has variable speed playback.
  • There are high speed playback options for other phones, too. On Android, the Astro Player app has great support for variable speed playback.

Trick 4: Downloading videos using a script

In the past, I've published some Powershell scripts for bulk downloading Channel 9 videos. Here' s one, updated for Build 2014. But don't run it just yet, because I think I've found a better options, which I'll show you next.


Trick 5: Downloading videos using a smarter script

That's fine, but it's kind of heavy handed. Let's be honest, have you actually watched all of the videos from an event before? It's more likely that you'll want to pick some based on the topic. I found a great site that builds customized feeds based on the session tags: http://dayngo.com/channel9/Events/a99db53e-aa3d-4089-9859-a2fe017ca357/Build_2014 

Disclaimer: This is some random site I found on the internet. Works on my machine. It does generate scripts, so you can see what it's doing.

Here I've filtered to show events tagged with ASP.NET, Web API, and Node.js.


Clicking the download button lets me select the formats I want to download.


That generates a custom PowerShell script (WGET is also an option) with just the content I picked:

$overwrite = $false
$webClient = New-Object System.Net.WebClient 
$feeds =  (("Take_Your_Solution_Worldwide_from_the_Start_with_Bing_Translator.mp4","http://video.ch9.ms/sessions/build/2014/2-656_LG.mp4"),("Continuous_Delivery_and_Continuous_Integration_with_Visual_Studio_Online_and_Microsoft_Azure.mp4","http://video.ch9.ms/sessions/build/2014/3-584_LG.mp4"),("What_s_New_for_ASP_NET_and_Web_in_Visual_Studio_2013_Update_2_and_Beyond.mp4","http://video.ch9.ms/sessions/build/2014/3-602_LG.mp4"),("Building_Web_APIs_for_Mobile_Apps_Using_ASP_NET_Web_API_2_1.mp4","http://video.ch9.ms/sessions/build/2014/3-603_LG.mp4"),("Deep_Dive_Improving_Performance_in_Your_ASP_NET_App.mp4","http://video.ch9.ms/sessions/build/2014/3-605_LG.mp4"),("Powerful_Mobile_Apps_with_Mobile_Services_and_ASP_NET_Web_API.mp4","http://video.ch9.ms/sessions/build/2014/3-623_LG.mp4"),("Using_Node_js_and_Python_in_Visual_Studio_and_on_Azure.mp4","http://video.ch9.ms/sessions/build/2014/3-631_LG.mp4"),("Building_a_Single_Page_Application_with_ASP_NET_and_AngularJS.mp4","http://video.ch9.ms/sessions/build/2014/3-644_LG.mp4"))  
$entries = $feeds.Length
$progress = 0 
$pagepercent = 0 
$dir = get-location
foreach ($item in $feeds){
    $name,$link = $item
    $saveFileName = join-path $dir $name
    if ((-not $overwrite) -and (Test-Path -path $saveFileName))     
        write-progress -activity "$saveFileName already downloaded" -status "$pagepercent% ($progress / $entries) complete" -percentcomplete $pagepercent    
        write-progress -activity "Downloading $saveFileName" -status "$pagepercent% ($progress / $entries) complete" -percentcomplete $pagepercent       
            $webClient.DownloadFile($link, $saveFileName)
        trap [Exception]{
            write-host ("Unable to download " + $saveFileName)
    $pagepercent = [Math]::floor((++$progress)/$entries*100) 


Hope these tips help. Get to work!

1 Comment

Comments have been disabled for this content.