How to stream to YouTube Live from a Skype call

January 22nd, 2019  |  Published in Uncategorized

Last month I helped Ariel Waldman run a YouTube Live stream from McMurdo Station in Antarctica where she answered questions from her Patreon supporters. We believe that this is the first time that anyone has broadcasted live to the internet in this way from Antarctica, because the only supported streaming service at McMurdo is Skype. This post is the documentation for the process I used to make this connection.

You will need a collaborator outside of Antarctica who will relay the Skype call to YouTube Live. If you are that collaborator, you will need the following software and hardware:

  1. a computer and a high-bandwidth internet connection. The computer will be encoding MPEG4 video in realtime, so it needs to be reasonably modern and powerful. I used a Macbook Pro with a quad-core Intel i7-3.1Ghz, and my home internet connection which is Comcast cable with a 12Mbps upload speed. You can use a Mac or a PC.
  2. Your own Skype account, and the latest version of the Skype client installed
  3. A copy of OBS installed
  4. The OBS NDI plugin installed into OBS
  5. a YouTube account (or the username and password for YOUR YouTube account)

Set up the Skype client before the call by going to Settings -> Calling -> Advanced and make sure “Allow NDI Usage” is switched on.

Set up the YouTube Live stream before the call by going to YouTube Creator Studio and scheduling a new live event. After the event is created, opt for a “Single-use stream key”, choose “Other encoders” and copy the code given under “Stream Name”. You’ll need it when we configured OBS. Now if you click on “View on watch page”, a new tab will open with the URL that you can distribute to your viewers ahead of the event. It’ll show a placeholder screen until you begin streaming at the time of the event.

And finally, load up OBS before the call begins. Click the Plus icon at bottom left to add a new Scene. Then click Plus under Sources and add a new “NDI Source”. Just click OK for now to accept the defaults – later we’ll use this to connect with the Skype call and receive the audio and video for streaming. In the Mixer section, drag the slider for Mic/Aux down to zero to ensure that sound from your own laptop microphone won’t get incorporated into the stream.

Now go to OBS Preferences and find the Stream section. Select YouTube as the Service type, and under Stream Key you can paste the YouTube code that you copied earlier when you configured the live stream. On the Output section, enter 4000 as the video bitrate. Under Video select a Base Resolution and an Output Resolution of 1280×720. This is the native Skype client resolution at the time I write this. Finally, right-click on the main area of the OBS window in what is currently a big black box. Under “Transform”, turn on “Fit To Screen”. This will ensure that if Skype resizes the video stream due to a poor connection during the call, it still gets scaled by OBS to fit the full resolution of the YouTube Live video window.

When it’s nearly time for the live stream:

  1. Ensure your Skype client is running and logged in
  2. At McMurdo, they should make a video call to your Skype account several minutes before the scheduled live stream
  3. At your end, ensure that NDI is enabled in Skype and double-click on the NDI Source in OBS to bring up its configuration window. There should now be something listed in the dropdown menu under “Source Name” that mentions Skype. Select this and hit OK, and the black box in the main OBS window should start showing the Skype call live. At the McMurdo end, you’ll see a message telling you that the call may be being recorded.
  4. Hit “Start Streaming” in OBS and then go to the YouTube Creator Studio in a web browser. Select your event and go to its “Live Control Room”. You should soon see audio and video appear in a preview window there.
  5. At this point, you will still be able to talk on the Skype call to the person at the McMurdo end. Let them know that you’re ready to put them live, count them down from ten, and hit the button in the YouTube Live Control Room to start the live event.
  6. When it’s all done, stop the event from the YouTube Live Control Room, stop streaming in OBS, and end the Skype call.

If everything goes smoothly then you’ll be rewarded with a high-quality YouTube Live stream that you can monitor on a second device like a phone or tablet. You should expect that there will be as much as 30 seconds lag behind the Skype stream when viewing the stream this way.

Scripting “Find My iPhone” from Ruby

July 23rd, 2009  |  Published in Uncategorized

When the iPhone OS 3.0 came out with new Mobile Me features allowing you to remotely discover the location of your iPhone and send it a message and an alarm, I hoped that there’d be an API. While there’s no official way to access it, the enterprising Tyler Hall and Sam Pullara dug out their HTTP sniffers and figured out how the javascript on me.com talks to its backend service.

Their code is written in PHP and Java respectively, two languages I’m not particularly comfortable in. Translating from their source code, I’ve produced a ruby version and packaged it as a very simple gem. It lacks real documentation or elegant error handling, but it’s easy to figure out.

Use it like this to locate your phone:

$ sudo gem install mattb-findmyiphone --source https://gems.github.com

>> require 'rubygems' ; require 'findmyiphone'
>> i = FindMyIphone.new(username,password)
>> i.locateMe
=> {"status"=>1, "latitude"=>51.546544, "time"=>"8:06 AM", "date"=>"July 23, 2009", "accuracy"=>162.957953, "isLocationAvailable"=>true, "isRecent"=>true, "isLocateFinished"=>true, "statusString"=>"locate status available", "isAccurate"=>false, "isOldLocationResult"=>true, "longitude"=>-0.05744}

Important Message on the iPhoneAnd to send a message:

>> i.sendMessage("Unimportant message")
=> {"status"=>1, "time"=>"8:17 AM", "date"=>"July 23, 2009", "unacknowledgedMessagePending"=>true, "statusString"=>"message sent"}

Finally, if you look in the examples directory you’ll find a short script that uses the location data to update Fire Eagle via its API. Fill in the example YAML files with the appropriate credentials and it’ll do the rest.

Of course the code’s all open source and contributions via Github are very welcome.

iPhone coding for web developers

March 28th, 2009  |  Published in iphone, talks, Uncategorized

This week the London Flash Platform User Group ran an evening of iPhone developer talks. My talk, “iPhone Coding For Web Developers” seemed to go down well. As a web developer, I’ve found the iPhone development environment exciting in its power and possibilities, but also perplexing in its lack of basic facilities that I’d take for granted in a modern dynamic language. This talk (based on a previous blog post here) goes into some detail about how I use HTTP, JSON and other web-oriented tech in my iPhone work.

Conference season 2008

February 7th, 2008  |  Published in Uncategorized


The March 2008 US conference season is nearly upon us. I’m just on my way back from representing Dopplr at Social Graph Foo Camp (find out more by listening to the Citizen Garden Podcast I participated in after the camp), but I’ll be back here again in three weeks.

Read the rest of this entry »

Last call for XTech

January 25th, 2008  |  Published in Uncategorized

It’s that time of year again – today is your last chance to put in a proposal for XTech 2008 in Dublin. You can read all about it in the Call for Participation. This year, along with the traditional core Web and XML technologies of XTech, we’re focusing on “The Web on the Move” – the emerging portability of data, applications and identity on the internet.

I’m writing my proposal today – I’m planning on pulling the very loose ramble I presented at Barcamp London on messaging architectures into a proper talk. For 2008 I’m very excited about Erlang, XMPP, message brokers such as ActiveMQ and clientside messaging with Comet. The future’s asynchronous and highly concurrent.

Read the rest of this entry »

Hardcore Hardware Hacking Weekend

July 9th, 2007  |  Published in Uncategorized

If you’ve seen me talk at a conference recently (perhaps XTech or ApacheCon Europe) you’ll know that I’m very interested in what happens when the coders who made the web get to script the real world. Cheap and powerful hardware prototyping is now within the reach of anyone who can code a webapp or configure a Unix box.

Read the rest of this entry »

20:20 talk on hardware hacking for software people

May 19th, 2007  |  Published in Uncategorized

I just got back from XTech 2007 in Paris. It was an excellent conference this year and I’m really proud of having contributed in a small way by being on the programme committee. Every year the speaker lineup gets better and better.

Read the rest of this entry »

Stemtags is back, thanks to Camping

December 10th, 2006  |  Published in Uncategorized

Nearly two years ago, I wrote a utility to check your del.icio.us tags for duplication using Porter stemming. Until today, the application had stopped working completely due to the fragility of the screenscraping code it was using. For fun, I’ve done a rewrite using Ruby and Hpricot, with all-new fragile screenscraping code based on the del.icio.us JSON feeds (thanks to Lenny Domnitser for pointer those out to me). I web-enabled it using Camping, a nice mini-framework for when webapps don’t need all the bells and whistles of Rails.

Here’s the result.

Read the rest of this entry »

Video of a lightning-talk on my Second Life work for Nature

December 9th, 2006  |  Published in Uncategorized

Last month I went along to the Google Open Source Jam in London. It was a very entertaining evening with a great crowd. At the last minute I decided to give a quick show-and-tell on the work in progress at Nature.

Read the rest of this entry »

My last.fm hack discussed on BBC Radio

July 14th, 2006  |  Published in Uncategorized

Thanks to Tristan for pointing out a little snippet on the Phill Jupitus 6Music Breakfast Show this week. The Internet’s Dave Green talked a bit about my last.fm hack as part of his “zomg teh internets!” section.

Read the rest of this entry »