OUseful.Info, the blog…

Trying to find useful things to do with emerging technologies in open education

Posts Tagged ‘youtube

Confluence in My Feed Reader – The Side Effects of Presenting

Don’tcha just love it when a complementary posts happen along within a day or two of each other? Earlier this week, Martin posted on the topic of Academic output as collateral damage suggested that “you can view higher education as a long tail content production system. And if you are producing this stuff as a by-product of what you do anyway then a host of new possibilities open up. You can embrace unpredictability”.

And then today, other Martin comes along with a post – Presentation: Twitter for in-class voting and more for ESTICT SIG – linking to a recording of a presentation he gave yesterday, but one that includes twitter backchannel captions from the presentation that were tweeted by the presentation that in turn itself, as well as the (potentially extended/remote) audience.

Brilliant… I love it…I’m pretty much lost for words…

`Just... awesome...

What we have here, then, is the opening salvo in a presentation capture and amplification strategy where the side effects of the presentation create a legacy in several different dimensions – an audio-visual record, for after the fact; a presentation that announces it’s own state to a potentially remote Twitter audience, and that in turn can drive backchannel activity; a recording of the backchannel, overlaid as captions on the video recording; and a search index that provides timecoded results from a search based on the backchannel and the tweets broadcast by the presentation itself. (If nothing else, capturing just the tweets from the presentation provides a way of deep searching in time into the presentation).

Amazing… just amazing…

Written by Tony Hirst

April 30, 2010 at 1:16 pm

Searching the Backchannel – Martin Bean, OU VC, Twitter Captioned at JISC10

with 6 comments

Other Martin’s been at it again, this time posting JISC10 Conference Keynotes with Twitter Subtitles.

The OU’s VC, Martin Bean, gave the opening keynote, and I have to admit it really did make me feel that the OU is the best place for me to be working at the moment :-)

… though maybe after embedding that, my days are numbered…? Err…

Anyway, I feel like I’ve not really been keeping up with other Martin’s efforts, so here’s a quick hack a placemarker/waypoint in one of the directions I think the captioning could go – deep search linking into video streams (where deep linking is possible).

Rather than search the content, we’re going to filter captions for a particular video, in this case the twitter caption file from Martin (other, other Martin?!) Bean’s #JISC10 opening keynote. The pipework is simple – grab the URL of the caption file and a “search” term, parse the captions into a feed with one item per caption, then filter on the caption content. I added a little Regular Expression block just to give a hint as to how you might generate a deeplink into content based around the tart time of the caption:

Filter based searching caption

You can find the pipe here: Twitter caption search

One thing to note is that it may take some time for someone to tweet what someone has said. If we had a transcript caption file (i.e. a timecoded transcript of the presentation) we might be able to work out the “mean time to tweet” for a particular event/twitterer, in which case we could backdate timestamps to guess the actual point in the video that a person was tweeting about. (I looked at using auto-genearated transcript files from Youtube to trial this, but at the current time, they’re rubbish. That said, voice search on my phone was rubbish a year ago, but by Christmas it was working pretty well, so the Goog’s algorithms learn quickly, especially where error signals are available. So bear in mind that if you do post videos to Youtube, and you can upload a caption file, as well as helping viewers, you’ll also be helping train Google’s auto-transcription service (because it’ll be able to compare the result of auto-transcription with your captions file…. If you’re the Goog, there are machine learning/supervised learning cribs everywhere!))

(Just by the by, I also wonder if we could colour code captions to identify in a different colour tweets that refer to the content of an earlier tweet/backchannel content, rather than the foreground content of the speaker?)

Unfortunately, caption files on Youtube, which does support deep time links into videos, only appear to be available to video owners (Youtube API: Captions), so I can’t do a demo with Youtube content… and I so should be doing other things that I don’t have the time right now to look at what would be required deeplinking elsewhere…:-(

PS The captioner tool can be found here: http://www.rsc-ne-scotland.org.uk/mashe/ititle/

Martin Hawksey, whose work this is, has described the evolution of the app in a series of several posts here: http://www.rsc-ne-scotland.org.uk/mashe/?s=twitter+subtitles

Written by Tony Hirst

April 19, 2010 at 12:59 pm

Posted in Pipework, Search

Tagged with , ,

Topical, Hyperlocal DeliTV for Local People

with one comment

It is said that “fortune favours the prepared mind”, or at least the mildy obsessing one, so when I saw @danbri’s post on Local Video for Local People and realised that it was trivial to get hold of geocoded Youtube videos within a certain distance of a specified location using the following Youtube API call:

http://gdata.youtube.com/feeds/api/videos?v=2 &q=hovercraft&location=50.694254,-1.224976&location-radius=5mi

it was immediately obviously that this could be used to provide a local (and optionally topical) feed of Youtube videos to populate a hyperlocal DeliTV video channel for watching on Boxee.

So here it is, my DeliTV Local pipe.

And here’s the front end:

To view the channel in Boxee, enter a location, and optionally a topic, and then either:

- run the pipe, and subscribe to the RSS feed directly in Boxee;
- bookmark the URI of the pipe. Enter the URI in you browser location bar according to the following pattern:
http://pipes.yahoo.com/ouseful/delitv_local?l=required,location&q=optional search terms
hit return, check the location and optional search terms are correct and the pipe is giving a plausible output, and then bookmark that page to a DeliTV tag on delicious. (WHen you bookmark the pag, any spacesin your search terms should be replaced by %20. So the above would be bookmarked containing the characters optional%20search%20terms). If you then subscribe to that DeliTV channel via a DeliTV pipe that you have hooked up to your Boxee account, you will be able to watch the channel through Boxee.

So for example, here’s my ‘Hovercrafts” channel for Ryde on the Isle of WIght:

(Hmm, I wonder, should these be sorted by relevance or recency? I think the default is relevance?)

If you want to define a variety of different topic channels around a particular location, or a set of channels on the same topic from different locations, bookmark each channel to delicious and subscribe to them all through the same DeliTV pipe :-)

See also: Deli TV – Personally Programmed Social Television Channels on Boxee: Prototype

Written by Tony Hirst

October 14, 2009 at 10:40 am

Watching YouTube Videos on Boxee via DeliTV

leave a comment »

One of the easiest ways to get started with DeliTV is to use it to watch video feed subscription from YouTube.

With DeliTV, you can bookmark the following sorts of Youtube content and then view it in a DeliTV Channel:

Bookmarked YouTube page Resulting DeliTV subscription
User homepage/channel
e.g Teachers’ TV channel
Guardian Newspaper
Recently uploaded videos for that user
Playlist page e.g T151: 3D Geo-World Demos Playlist feed
Video page e.g The Machine is Us/ing Us (Final Version) Single video
[NEW] Search results page e.g Search for “formula one” Search results containing 20 most relevant videos

Here is the example channel bookmarked to a demo DeliTV channel guide: delitv_ytdemo:

(You can of course grab a copy of any of these bookmarks into your own delicious account.)

We can now bookmark this channel guide so that it appears in a DeliTV multiplex. In the following example, I’m bookmarking it to my main delitv feed, and also to the boxeetest5 multiplex.

Here’s the result in my boxeetest5 feed:

DeliTV

And here’s a view of the delitv_ytdemo channel guide:

DeliTV channel guide

This is what the bookmarked user/channel produces – the recent uploads listing for that user/channel:

DeliTV - Youtube user/channel recent upoads

And here’s the playlist guide:

DeliTV - Youtube playlist feed

Remember, with DeliTV you don’t need to bookmark the actual Youtbe feed – just bookmark the user/channel, playlist or video page to Delicious, and DeliTV will do the rest for you…

To learn how to subscribe to your own DeliTV channel, see Deli TV – Personally Programmed Social Television Channels on Boxee: Prototype

PS a new feature, currently in testing, lets you bookmark a search results page. Whilst it is possible to generate searches for playlist or users/channels as well as videos, DeliTV currently returns just the 20 most relevant Youtube videos when a Youtube search results page is bookamarked.

Written by Tony Hirst

September 19, 2009 at 3:27 pm

Posted in Anything you want, OBU

Tagged with , , ,

Deli TV – Personally Programmed Social Television Channels on Boxee: Prototype

with 32 comments

[Please note, this post originally went out under the title of "Delicious TV", which happens to be a trademarked "property". If you're looking for delicioustv.com (is their DTV identifier also trademarked, I wonder?, which serves up the Totally Vegetarian public television show, you ned to go here. Sorry about that... ]

On of the things that I wanted to explore in the Digital Worlds online short course (T151 Digital worlds: designing games, creating alternative realities – registrations now open for October 2009 start;-) was how we might use Youtube video playlists as a way of pointing students towards an optional set of third party based video resources that could illustrate the various topics contained within the course. Here’s my first attempt how we might deliver such a service using Boxee…

On the original Digital Worlds uncourse blog I explored various ways of using Splashcast to provide a single point of access to video content. In part based on that, I came up with an ad hoc set of requirements for handling video content in a relaxed way;-)

- a browser based or multiplatform delivery interface that would allows users to watch video compilations on a TV/large screen in lean back mode;

- a way of curating content and generating hierarchical playlists in which a course could have a set of topics, and each topic could contain one or more videos or video playlists. Ideally, playlists should be able to contain other playlists.

As a precursor to this, I had a little tinker with Boxee last week to produce a UK HEI Boxee Channel. The recipe was quite simple, and using a list of UK HEI user pages on Youtube generated a channel on Boxee that would let you browse the recent uploads from each HEI.

The list of HEI Youtube pages was originally scraped from a table on a third party web page, but in a comment to the original post I also demonstrated how the recipe could also be used to create a Boxee channel feed from a delicious bookmark list. In particular, I linked to a channel of UK Media Youtube channels, a channel of UK Government Youtube channels and a channel on differential quations built up from separate OER playlists on Youtube. To view the channels in Boxee, grab the RSS feed from the appropriate channel pipe and then subscribe to it in Boxee as a video content feed.

Can you see where we might go with that approach? That is, with this: I also demonstrated how the recipe could also be used to create a Boxee channel feed from a delicious bookmark list…

Delicious TV Deli TV

How about using delicious as a way of curating video playlists and viewing them in Boxee? This would offer quite a large amount of flexibility: if a playlist was based on a tag feed, users could generate many different playlists; if a playlist could contain another (delicious) playlist, one user could build their own playlists that contained nested playlists (e.g. a course playlist could contain separate topic playlists, or a separate playlist for each week of the course) or even other peoples’ playlists; ‘live’ playlists could be copied from one user to another – that is, if my playlist bookmarked one of your playlists, any changes you made to that playlist would show up whenever I watched your channel; and so on…

So here it is – Delicious TV Deli TV:

Here’s what’s on one of my channels:

You may notice that the channel contains the following separate sorts of content:

- programmes listed in a BBC iPlayer category feed (e.g. BBC Satire);
- a podcast feed (Wiley and Downes in Discussion);
- a particular Youtube videos (New Model Army);
- a Youtube Playlist (MIT differential equations);
- recently uploaded videos to a particular user’s Youtube channel (the Guardian)l
- another Delicious TV playlist (psychemedia’s bookmarks).

(Not shown is a link to a particular programme on iPlayer, but that is also supported.)

So here’s how that channel was programmed:

Simply by bookmarking links to delicious…

To get started with your own Delicious TV Deli TV</em channel on Boxee, all you need is a Boxee account from Boxee.tv. Oh, and you’ll also need to download a Boxee client to your computer (Windows, Macs and Linux are all supported).

What next? That all depends on whether or not you have a delicious account…

If you do have an account on the delicious social bookmarking site then you will be able to programme your own Boxee channel by bookmarking programmes and playlists you your delicious account.

If you don’t have a delicious account, you can still programme a Delicious TV channel by subscribing to someone else’s delicious TV playlist in Boxee.


If you DO NOT have a delicious account:

Have a look at http://delicious.com/tag/delitv to see who’s been bookmarking Delicious TV Deli TV content on delicious. (For example, my Delicious TV Deli TV empire is based here: http://delicious.com/psychemedia/delitv ;-)

Use the name of the user whose Delicious TV Deli TV channel you want to subscribe to in the following URL:
http://pipes.yahoo.com/ouseful/delitv?_render=rss&q=DELICIOUS_USERNAME

So for example, my feed is at:
http://pipes.yahoo.com/ouseful/delitv?_render=rss&q=psychemedia

Subscribe to the URL in Boxee:

Now fire up your Boxee client, go to the pop-out Applications menu on the left hand side of the screen and select Video, then choose My Video Feeds:

You should now be able to view the Delicious TV Deli TV Channel you subscribed to.


If you DO have a delicious account:

The top level menu of your Boxee/Delicious TV Deli TV channel will contain those items you have tagged delitv in delicious.

Subscribe to the following Delicious TV Deli TV feed in Boxee:

http://pipes.yahoo.com/ouseful/delitv?_render=rss&q=DELICIOUS_USERNAME

where DELICIOUS_USERNAME is your delicious username.

At the current time, you can bookmark:

  • a particular Youtube video
    (http://www.youtube.com/watch?v=YC8Kk9nEM0Y);
  • a Youtube Playlist
    (http://www.youtube.com/view_play_list?p=11DBE3516825CD0F);
  • recently uploaded videos to a particular user’s Youtube channel (http://www.youtube.com/user/bisgovuk);
  • programmes listed in a BBC iPlayer category feed
    (e.g. http://www.bbc.co.uk/programmes/genres/drama/thriller);
  • another Delicious TV playlist
    (http://delicious.com/psychemedia/t151boxeetest);
  • an MP3 file
    (e.g. http://www.downes.ca/files/audio/downeswiley4.mp3);
  • a “podcast” playlist
    (http://delicious.com/psychemedia/wileydownes+opened09).

If you bookmark another Delicious TV Deli TV feed, that will be rendered as a submenu in Boxee.

You can also bookmark other peoples Delicious TV Deli TV pages.


Feedback

If you run into any problems with Delicious TV Deli TV, please post a comment below. At the moment, Delicious TV Deli TV is very much in testing, so all feedback is welcome.

If you are outside the UK, then the BBC iPlayer links will not work for you. However, links to US based video streaming services may work for you (if you try them and they do, or don’t, please let me know via a comment below:-)

I haven’t tried the service with watch again content from ITV, Channel 4, or Channel 5 in the UK – anyone know if Boxee supports these yet (or is likely to in the near future?)

I don’t think Boxee has a mobile client, which is a shame; if anyone knows of a mobile video browser that can consume Boxee RSS feeds, please let me know… :-)

If anyone with a design flair would like to help me out with a the design for a simple homepage for Delicious TV Deli TV, a fully blown Delicious TV Deli TV Boxee app, please get in touch… :-)

If anyone is a patent troll who claims to have already got a monopoly over this sort of thing, f**k off – it was obvious and trivial given the current state of the tech and I didn’t need (indeed, I haven’t even seen) your crappy patent, in order to figure it out…

PS so why Delicious TV Deli TV? – So My Boxee “Delicious TV” Gets a Trademark Infringement Warning.

Written by Tony Hirst

September 2, 2009 at 10:04 am

UK HEI Boxee Channel

with 5 comments

A week or so ago, Liz Azyan posted a list of UK HEI Youtube channels. Although not quite as polished as @liamgh et al’s OU Boxee app, I piucked up on a couple of suggestions Liam made over a pint last night about simply subscribing to an RSS feed in Boxee to roll my own UK HEI Youtube Boxee channel thing…

So here are the institutional channels:

and here’s a peek inside one of them:

This lets me watch the most recently uploaded videos to all (?) the UK HEIs’ most recent uploads to their Youtube channels, organised by institution via a lean back TV interface.

(You might be able to submenu the institutional channels/streams according to playlists they have specified, as well as tidying up things like icons/logos, maybe, but this was a 10 minute hack, rather than a half hour hack, ok?!;-)

Here’s the recipe…

1. Grab the table from Liz’s web page and create a feed from it:

2. Generate the feed URIs for the most recent uploads to each channel (in the form required by Boxe – e.g. rss://gdata.youtube.com/feeds/base/users/abertayTV/uploads?alt=rss&v=2&orderby=published):

Filter out stuff that isn’t a feed and complete the pipe:

We can now grab the RSS feed from the pipe in the normal way and subscribe to it via a personal account on the Boxee website.

If you now launch the Boxee app, select:

- Video:

- Internet

- Video Feeds (My Feeds)

- the UK HEI Youtube Videos Channel

And from there, you should be able to browse – and play – the recent uploads to all the UK HEI Youtube channels that Liz has listed.

Not that I had a niggle with my Boxe player – I could hear the audio but not see the video for any of the Youtube videos when I tried to play them. If anyone else tries out this channel and gts the same problem, please let me know and I;ll see if it’s a feed problem. Otherwise, I’ll assume it’s a local glitch…

Here’s the RSS feed URI again: “UK HEI Youtube Channels on Boxee” RSS feed

PS out of interest, if I had bid to do this as a #jiscri project, how much should I have asked for?
- planning: 10 mins chatting with Liam over a pint ysterday;
- design: <5 mins looking up Youtube API/URI patterns
- implementation:: <5 mins creating Yahoo pipe
- configuration: <5 mins subscribing to the pipe feed in Boxee
- testing: <5 mins seeing if it worked in Boxee (which it doesn’t, properly, but I’m blaming that on a local problem and trustung that it does actually work… err…?!;-)
Okay, so all told it was maybe a sub-20 minute hack rather than 5 minute one?
- documentation: (i.e. blog post) 30-45 mins, incl grabbing screenshots.

And I’m on holiday today…

Written by Tony Hirst

August 28, 2009 at 2:44 pm

Posted in Tinkering

Tagged with , ,

Guardian Game Reviews – with Video Trailers

with one comment

In what I intend to be the last post in the series for a while – maybe – here’s a quick hack around the Guardian Open-Platform Content API that shows how to “annotate” a particular set of articles (specifically, recent video game reviews) with video trailers for the corresponding game pulled in from Youtube, and then render the whole caboodle in a Grazr widget.

So let’s begin…

Take one Guardian API query:
http://api.guardianapis.com/content/search?filter=/global/reviews&filter=/technology/games&api_key=MYSECRETACTIVATEDAPIKEY we construct the URI and call the webservice:

Here’s a typical result:

As with the football results map pipe, the linkj-text looks like a good candidate for search query text. So let’s tweak it for use as a search on somewhere like Youtube:

I want to be able to let the user choose trailer or review videos, which is why I cleared the search string of the word “review” first, before adding the user preference back into the string.

Now run a Youtube GData/API search using an old pipe block I found laying around (Youtube video search pipe) and grab the top result:

Now I happen to know that if you give a Grazr widget a feed with enclosure.url attributes that point to a flash file, it will embed the flash resource for you:

So now we can take the RSS output of the pipe and pop it into a Guardian game review with video previews Grazr widget:

(The widget layout is customised as described in part in Setting the 3 Pane divider positions.)

If you want to grab the widget and embed it your own webpages, it’s easy enough to do so (although not on hosted WordPress blogs). Simply click on “Share” and select “Customize” from the widget menu bar:

Then you can customise the widget and grab an embed code, or a link to a full screen view:

Good, eh? ;-)

PS Grazr (which is actually an OPML viewer as well as an RSS viewer) embeds other stuff too. For example, here it as as a slideshare viewer; and here it is showing how to automatically generate embedded players for Youtube videos and MP3 audio files using delicious Feed Enhancer – Auto-Enclosures pipe. (If you’re into a bit of hackery, it’ll carry Scribd iPaper too: Embed Scribd iPaper in Grazr Demo. I’m guessing you should be able to get it to embed arbitrary flash games as well?)

Written by Tony Hirst

March 19, 2009 at 1:42 pm

Posted in Pipework, Tinkering

Tagged with ,

Easier Twitter Powered Subtitles for Youtube Movies

with 6 comments

Pretty much all the sentiment I’ve picked from my post on Twitter Powered Subtitles for Conference Audio/Videos on Youtube is that the process for generating the subtitles is too complicated, so I’ve had a go at simplifying it:

The workflow is now as follows. Suppose you have a recording of an event that people were tweeting through using a particular hashtag, and you want to annotate the recording using the tweets made at the time as subtitles.

    Go to Twitter advanced search and search for the particular hashtag;

  1. Tweak the number of results on the page and the date setting (if necessary):
  2. If you only want tweets FROM a particular person, limit the search that way too:
  3. If the results you want to convert to subtitles are on “older” search results pages, navigate to the required results page
  4. When you have a results page containing the tweets you want to convert to subtitles, grab the URL of that results page and copy it into the subtitler form at http://ouseful.open.ac.uk/twitterSubtitles.php
  5. Optionally, if you want to specify the tweet that you want to be the first subtitle, copy its URL (that is, the URL that is pointed to by the View tweet link for that tweet:
  6. Optionally again, if you want to specify the tweet on the results page that you want to be the lastsubtitle, grab it’s URL and paste it into the form.
  7. Generate the subtitles:
  8. Save the page as a text file with the suffix .sub:
  9. You can now upload the .sub subtitle file to Youtube.
  10. So hopefully, that’s a little easier? (Note that there is a also a bookmarklet on the subtitler page that will create the subtitle file directly from a Twitter advanced search results page.)

    PS here are some more thoughts about ways in which the subtitler might develop: Twitter Powered Youtube Subtitles, Reprise: Anytime Commenting.

    PPS if anyone fancies converting the Javascript that generates the subtitles in the browser to PHP that will do the processing on the server, please feel free to post the code back here as a comment ;-)

    PPPS Woudln’t it be good if CoverItLive offered an exportable subtitle file from previous events? In the meantime, does anyone know if it’s possible to get an RSS feed of posts from previous CoverItLive event commentaries?

    PPPs See also: Twitterprompter?, discussing several possible use cases for Twitter in a live presentation environment.

Written by Tony Hirst

March 17, 2009 at 12:59 pm

Posted in Tinkering

Tagged with ,

Twitter Powered Youtube Subtitles, Reprise: Anytime Commenting

with 9 comments

One of the things that attracts me to serialised feeds (as well as confusing the hell out of me) is the possibility of letting people subscribe to, and add, comments in “relative time”…

… that is, as well as viewing the content via a serialised feed, the comments feed should also be serialised (with timestamps for each comment calculated relative to the time at which the person commenting started receiving the serialised feed).

Applying this to the idea of tweeted Youtube movie subtitles (Twitter Powered Subtitles for Conference Audio/Videos on Youtube) in which every tweet made during a presentation at or around that presentation becomes a subtitle on a recording of that presentation, it strikes me that a similar model is possible.

That is, different individuals could watch a Youtube video at different times, tweeting along as they do so, and then these tweets could be aggregated according to relative timestamps to provide a single, combined set of subtitles.

So how might this work in practice? Here’s a thought experiment run through…

Firstly, it’d probably be convenient to set up a twitter account to send the tweets to (say @example, for example).

Create a tag for the video – this could be something like #yt:tBmFzF8szpo for the video at http://www.youtube.com/watch?v=tBmFzF8szpo.

(Alan Levine reminded me about flickr machine tags earlier today, which are maybe also worth considering in this respect, e.g. as a source of inspiration for a tagging convention?)

Grab a ctrl-C copy of the phrase @example #yt:tBmFzF8szpo for quick pasting into a new tweet, and then start watching the video, tweeting along as you do so…

To generate your subtitle feed, you can then do a search based on Tweets from your username (which would be @psychemedia in my case) to e.g. @example, with hashtag #yt:tBmFzF8szpo, and maybe also using a date range.

(You could augment the Yahoo pipe I used in the twitter subtitle generator proof of concept to remove the hashtag when generating the feed used for subtitling?)

The actual subtitle file generator could then pull in several different subtitle feeds from separate people, relativise their timestamps relative to the time of the first tweet (which could maybe use a keyword, too – such as “START”: @example START #yt:tBmFzF8szpo;-) and then produce an aggregated subtitle feed.

As more people watched the video (maybe including the subtitles to date), their feeds could be added to the aggregating subtitle file generator, and the subtitle file updated/refreshed.

Individuals could even rewatch the video and create new feeds for themselves to join in the emerging conversation…

(Okay, so it’s maybe slower than just reading through the comments, having to replay the video in real time to read the tweets, but this is a sort of thought experiment, right, albeit one that can be implemented quite easily…;-)

PS In one of the comments to Show and Translate YouTube Captions Matt Cutts gave an example of a URL that “will search for the word “china” in videos with closed captions” [ http://www.youtube.com/results?closed_captions=1&search_query=china ] (although I’m not sure how well it works?).

So I’m thinking – if live tweets from an event can be associated with a video of an event (maybe because the video is posted with a link to a (now out of date!) upcoming record for that event in order to anchor it in time) then being able to search the tweets as captions/subtitles provides a crib for deeplink searching into the video? (But then, I guess the Goog is looking at audio indexing anyway?)

PPS I just came across another tool for adding subtitles to Youtube videos, as well as videos from other online video sites – overstream.net:

It’s worth looking at, maybe?

PPPS see also Omnisio, a recent Google acquisition that offers “select clips from videos you find on YouTube and other video sites, and easily post them on your profile page or blog. Even better, you and your friends can add comments directly in the video!”.

And there’s more: “With Omnisio you make and share your own shows by assembling clips from different videos.” Roll on the remixes :-)

PPPPS Martin implemented anytime commenting

Written by Tony Hirst

March 10, 2009 at 1:42 pm

Posted in Tinkering, Visualisation

Tagged with , ,

Twitter Powered Subtitles for Conference Audio/Videos on Youtube

with 11 comments

Last week, I wrote a post on hHow people Tweeted Through Carter on “Delivering Digital Britain” at NESTA, where I created a slideshow of tweets posted in response to the NESTA Delivering Britain event/video stream and used them to illustrate the audio recording of Lord Carter’s presentation.

Chatting to @liamgh last week, I mentioned how i was stumped for an easy way to do this. He suggested creating a subtitles feed, and then uploading it to Youtube, along with the audio recording (doh!).

So – here’s a proof of concept result of doing just that:

(Actually, I’m not sure that subtitles/closed captions work in the embedded movies, so you may have to click through: proof of concept use of Tweets as subtitles: Carter at ‘Delivering Digital Britain’, part 1. NB it is possible force embedded videos to show captions, as
Learn More: Showing captions by default
describes. Simply add &cc_load_policy=1 to the embed code; so e.g. in WordPress, you would use something like [youtube=http://www.youtube.com/watch?v=tBmFzF8szpo&cc_load_policy=1 ].
)

And here’s how I did it…

The first thing to do was check out how Youtube handled subtitles: Getting Started: Adding / Editing captions.

The trick is to upload a textfile with lines that look something like this:
0:03:14.159
Text shown at 3 min 14.159 sec for an undefined length of time.

0:02:20.250,0:02:23.8
Text shown at 2 min 20.25 sec, until 2 min 23.8 sec

Secondly – getting the list of tweets hashtagged with #carter over the period Lord Carter was speaking (i.e. the period covered by the video). For the original proof of concept, I used the tweets from the spreadsheet of scraped tweets that @benosteen grabbed for me, though it later occurred to me I could get the tweets direct from a Twitter search feed (as I’ll show in a minute).

Scraped tweet timestamp

The question now was how to get the timecode required for the subtitles file from the timestamp associated with each tweet. Note here that the timecode is the elapsed time from the start of the video. The solution I came up with was to convert the timestamps to universal time (i.e. seconds since midnight on January 1st 1970) and then find the universal time equivalent of the first tweet subtitle; subtracting this time from the universal time of all the other tweets would give the number of seconds elapsed from the first tweet, which I could convert to the timecode format.

As to how I got the universal time values – I used a Yahoo pipe (Twitter CSV to timeingsd):

At this point, it’s probably worth pointing out that I didn’t actually need to call on @benosteen’s tweetscraper – I could just use the Twitter search API (i.e. the Twitter advanced search feed output) to grab the tweets. How so? Like this:

Looking at the results of this query, we see the timing is a little off – we actually need results from 8.30am, the actual time of the event:

Which is where this comes into play – searching for “older” results:

If you click on “Older” you’ll notice a new argument is introduced into the search results page URL – &page=:

…which means that by selecting appropriate values for rpp= and page= we can tunnel in on the results covering from a particular time by looking at “older” results pages, and grabbing the URL for the page of results covering the time period we want:

Then we can grab the feed:

which gives us something like this:
http://search.twitter.com/search.atom?q=+%23carter+since%3A2009-02-24+until%3A2009-02-24

which we hack a little to get to the right period:

http://search.twitter.com/search.atom?q=+%23carter+since%3A2009-02-24+until%3A2009-02-24&page=4&rpp=100

(For more info on the Twitter search API, see the Twitter Search API Documentation wiki.)

NB while I’m at it, note that there’s a corollary hack here that might
come in useful somewhere, or somewhen, else – getting a Twitter search feed into a Google spreadsheet (so we can, for example,process it as a CSV file published from the spreadsheet):

=ImportFeed("http://search.twitter.com/search.atom?rpp=100&page=4&q=+%23carter+since%3A2009-02-24+until%3A2009-02-24")

That is:

Okay – back to the main thread – and a tweak to the pipe to let us ingest the feed, rather than the spreadsheet CSV:

Just by the by, we can add a search front end to the pipe if we want:

and construct the Twitter search API URI accordingly:

(The date formatter converts the search date to the format required by the Twitter search API; it was constructed according to PHP: strftime principles.)

Ok – so let’s recap where we’re at – we’ve now got a pipe that will give us universal timecoded tweets (that’s not so far for such a long post to here, is it?!) If we take the JSON feed from the pipe into an HMTL page, we can write a little handler that will produce the subtitle file from it:

Here’s the code to grab the pipe’s JSON output into an HTML file:

var pipeUrl="http://pipes.yahoo.com/pipes/pipe.run?_id=Dq_DpygL3hGV7mFEAVYZ7A&aqs";

function ousefulLoadPipe(url){

var d=document;
var s=d.createElement('script');
s.type='text/javascript';

var pipeJSON=url+"&_render=json&_callback=parseJSON";
s.src=pipeJSON;
d.body.appendChild(s);
}
ousefulLoadPipe(pipeUrl);

Here’s the JSON handler:

function parseJSON(json_data){
var caption; var timestamp=0; var mintime=json_data.value.items[0]['datebuilder'].utime;
for (var i=0; itimestamp) mintime=timestamp;
}

for (var j=json_data.value.items.length-1; j>=0; j--) {
caption=json_data.value.items[j]['title'];
timestamp=1*json_data.value.items[j]['datebuilder'].utime;
if (j>0) timeEnd=(1*json_data.value.items[j-1]['datebuilder'].utime)-3; else timeEnd=10+1*json_data.value.items[j]['datebuilder'].utime;
if (timeEnd<timestamp) timeEnd=timestamp+2;
timecode=getTimeCode(timestamp-mintime);
timeEnd=getTimeCode(timeEnd-mintime);
var subtitle=timecode+","+timeEnd+"
"+caption+"<br/><br/>";
document.write(subtitle);
}
}

Here’s the timecode formatter:

//String formatter from: http://forums.devshed.com/javascript-development-115/convert-seconds-to-minutes-seconds-386816.html
String.prototype.pad = function(l, s){
return (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length) + 1).join(s)).substr(0, s.length) + this + s.substr(0, l - s.length) : this; };

function getTimeCode(seconds){
var timecode="00:"+(Math.floor(seconds / 60)).toFixed().pad(2, "0") + ":" + (seconds % 60).toFixed().pad(2, "0")+".0";
return timecode;
}

(I generated the timecodes in part using a string formatter from http://forums.devshed.com/javascript-development-115/convert-seconds-to-minutes-seconds-386816.html.)

Copy and paste the output into a text file and save it with the .sub suffix, to give a file which can then be uploaded to Youtube.

So that’s the subtitle file – how about getting the audio into Youtube? I’d already grabbed an audio recording of Carter’s presentation using Audacity (wiring the “headphones out” to the “microphone in” on my laptop and playing the recording from the NESTA site), so I just clipped the first 10 minutes (I think Youtube limits videos to 10 mins?) and saved the file as a wav file, then imported it into iMovie (thinking I might want to add some images, e.g. from photos of the event on flickr). This crib – iMovie Settings for Upload to YouTube – gave me the settings I needed to export the audio/video from my old copy of iMovie to a file format I could upload to Youtube (I think more recent versions of iMovie support a “Share to Youtube” option?).

I then uploaded this file, along with the subtitles file:

So there we have it: Twitter subtitle/annotations (pulled from a Twitter search feed) to the first part of Lord Carter’s presentation at Delivering Digital Britain…

PS Also on the Twitter front, O’Reilly have started watching Twitter for links to interesting stories, or into particular debates: Twitscan: The Debate over “Open Core”.

Chatting to @cheslincoln the other night, we got into a discussion about whether or not Twitter could be used to support a meaningful discussion or conversation, given the immediacy/short lived nature of tweets and the limited character count. I argued that by linking out to posts to support claims in tweets, “hyper-discussions” were possible. By mining “attention trends” (a term I got from misreading a tweet of Paul Walk’s that scaffold a conversation, it’s possible to create a summary post of a conversation, or argument, like the O’Reilly one?

See also this post from Paul Walk: Anything you quote from Twitter is always out of context.

Written by Tony Hirst

March 8, 2009 at 4:04 pm

Follow

Get every new post delivered to your Inbox.

Join 134 other followers