<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet title="XSL_formatting" type="text/xsl" href="/blogs/shared/nolsol.xsl"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>

<title>
BBC Internet Blog
 - 
Marina Kalkanis
</title>
<link>https://bbclatestnews.pages.dev/blogs/bbcinternet/</link>
<description>Staff from the BBC&apos;s online and technology teams talk about BBC Online, BBC iPlayer, and the BBC&apos;s digital and mobile services. The blog is reactively moderated. Posts are normally closed for comment after three months. Your host is Eliza Kessler. </description>
<language>en</language>
<copyright>Copyright 2012</copyright>
<lastBuildDate>Thu, 16 Aug 2012 19:10:00 +0000</lastBuildDate>
<generator>http://www.sixapart.com/movabletype/?v=4.33-en</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 


<item>
	<title>Audio and Video Streaming the Olympics</title>
	<description><![CDATA[<div class="imgCaptionCenter" style="text-align: center; display: block; "><img class="mt-image-center" style="margin: 0 auto 5px;" src="https://bbclatestnews.pages.dev/blogs/bbcinternet/2012/08/16/monitoring_595.jpg" alt="Bank of screens showing a selection of videos. The ones at the bottom have loaded an application called " width="595" height="335" />
<p style="margin: 0px auto 20px; width: 595px; color: #666666; font-size: 11px;">BBC Online operations video monitoring wall</p>
</div>
<p>I&rsquo;m Marina Kalkanis and I head up the Core Services teams in BBC Future Media that are responsible for the BBC live and on demand programming on the internet. My colleague <a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2012/08/data_video_flow_olympics.html">Cait O&rsquo;Riordan has already outlined how the Olympic content &ndash; metadata and AV streams - gets to your device</a>, and <a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2012/08/olympic_data_xml_latency.html">David Rogers has blogged in detail about building the Olympic data services</a>.</p>
<p>This blog will give you more detail about how we built the media delivery workflow for the online Olympics.</p>
<p>My team takes the live broadcast feeds and turns them into formats that can be delivered on the internet along with the appropriate metadata. We also <a href="https://bbclatestnews.pages.dev/sport/olympics/2012/schedule-results">deliver the Games catchup media that remain available for the next six months</a>.</p>
<p>Early on we decided to build our own workflow solution as the integration points to our own back-end systems tend to be unique to the BBC. We also decided to use, as much as possible, the same infrastructure and expertise that powers the BBC iPlayer, News, and Sport sites.</p>
<p>With iPlayer, News and Sport we already had services that were very good at Video on Demand (VOD) and live simulcast. What was new for the Olympics was, <a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2012/08/building_olympic_website.html">as Matthew Clark has blogged, the scale of our ambition</a>: 24 simultaneous live streams, thousands of events and more than 2400 hours of content over the two weeks.</p>
<p>Plus we were planning to double or triple any previous streaming peak.</p>
<p>We needed something that could handle the load, allow users to jump to any point in any event stream, and look great on a range of devices.</p>]]><![CDATA[<h2>Live Media</h2>
<div class="imgCaptionCenter" style="text-align: center; display: block; "><img class="mt-image-center" style="margin: 0 auto 5px;" src="https://bbclatestnews.pages.dev/blogs/bbcinternet/2012/08/16/salford_streaming_595.png" alt="The video feed goes to the Encoder in Salford; as do data from the Forge platform in London. Encoded video streams in Salford via RTMP, thence to AtoS systems in London, which are shared after processing with CDNs in the cloud." width="595" height="400" />
<p style="margin: 0px auto 20px; width: 595px; color: #666666; font-size: 11px;">Simplified diagram of the live streaming architecture</p>
</div>
<p>So where we&rsquo;ve innovated is in our use of HTTP <a href="http://en.wikipedia.org/wiki/Adaptive_bitrate_streaming ">adaptive bitrate streaming</a>.&nbsp;</p>
<p>ABR was tested in <a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2011/06/wimbledon_hd_http_streaming_tr.html">the Wimbledon HD HTTP streaming trial (interesting detail in blog post by Andy Armstrong)</a> that laid the groundwork for the Olympics video.</p>
<p>Delivering live video using HTTP &ndash; the same way web pages are delivered to your browser - gives us much greater distribution capacity as it uses existing caches and standard HTTP infrastructure. This allows users to receive high quality streaming video even when we&rsquo;re delivering the peaks around the big Team GB medal moments.</p>
<p>To get very technical,we decided to use eight <a href="http://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=74735">h.264 profiles</a> ranging from 54 kbps at 224x126 to 3500 kbps at1280x720. We serve these in several different Adaptive Bit Rate sets targeted at different screen resolutions, device capability and network throughput.&nbsp;We are using two flavours of chunked HTTP delivery: <a href="http://www.streamingmedia.com/Articles/Editorial/What-Is-.../What-is-HLS-(HTTP-Live-Streaming)-78221.aspx">Apple HLS</a> and <a href="http://www.adobe.com/products/hds-dynamic-streaming.html">Adobe HDS</a>. We are still delivering <a href="http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol">RTMP</a> &ndash; an older <a href="http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/Buyers-Guide-Transport-Protocols-80960.aspx">streaming protocol</a> - for some legacy devices.</p>
<p>A flagship feature of the BBC online Olympics is the <a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2012/06/interactive_video_player_launc.html">interactive video player (IVP, blog post by Alex Perry)</a>&nbsp; with chapter points that allow a user to jump back to key moments in a live video stream. The streaming technology behind this is HTTP Dynamic Streaming from Adobe with timecodes inserted to allow the player to accurately seek a specific second in the stream.</p>
<p>Oliver Bartlett has blogged about <a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2012/07/olympic_data_services_and_the.html">how the Olympic Data services supply the chapter markers and other metadata</a>&nbsp;to the IVP.</p>
<h2>Catch-Up</h2>
<p>As soon as an event is over the clock starts ticking for us to make the content available as catchup.</p>
<p>The live Flash Media Servers write the HTTP chunks for the live events to disk.</p>
<p>Another first for us is that rather than producing a separate encoding of the same media for the catchup version we recombine the live HTTP chunks back into a single mp4 file and deliver that to the origin of the <a href="http://en.wikipedia.org/wiki/Content_distribution_network">Content Distribution Network </a>to use for on-demand streaming.</p>
<h2>Managing the Streams</h2>
<p>To manage so many simultaneous live events we&rsquo;ve built a live stream management tool we call Marvin.</p>
<p>Marvin maintains all the encoders and all the streaming settings through a single interface. This means that with a single console the AV producers can start and stop encoders, connect the sources, bring graphic slates up and down, route the encoded streams to the correct end points and monitor the status of the encoders.</p>
<p>Marvin also sends the messages to our data services to turn on and off links on the pages and create the right connections, and sends the accurate start and end times to the <a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2012/07/olympic_data_services_and_the.html">Olympic data services</a>.</p>
<p>To manage the full and dynamic schedule we&rsquo;ve built an event scheduling tool that sets up webcasts for each event with scheduled start and end times. This tool allows the same AV producers to manage the full schedule for each day.</p>
<p>A really fantastic aspect of working on the Olympics online video service is seeing all the BBC Future Media teams pulling together to meet the challenge and the support we received from the wider streaming media industry.</p>
<p>If you have any questions on how we delivered the video service I'd love to hear from you.</p>
<p><em>Marina Kalkanis is Head of Core Services in BBC Future Media, Programmes and On-Demand</em></p>]]></description>
         <dc:creator>Marina Kalkanis 
Marina Kalkanis
</dc:creator>
	<link>https://bbclatestnews.pages.dev/blogs/bbcinternet/2012/08/audio_video_stream_olympics_tech.html</link>
	<guid>https://bbclatestnews.pages.dev/blogs/bbcinternet/2012/08/audio_video_stream_olympics_tech.html</guid>
	<category>BBC Sport</category>
	<pubDate>Thu, 16 Aug 2012 19:10:00 +0000</pubDate>
</item>

<item>
	<title>Under the bonnet of BBC iPlayer v3</title>
	<description><![CDATA[<p>Do you want to know what TV and radio programmes your friends are enjoying? Want to track what you've played on iPlayer and keep that history wherever you are? These are just some of the cool new features that we've added to <a href="http://beta.bbc.co.uk/iplayer/">our latest release of iPlayer that's now in public beta</a>. By integrating the site with <a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/bbc_id/">BBC iD</a> and other BBC services, we've put the emphasis firmly on personalisation.  </p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="kalkanis_iplayer_595.png" src="https://bbclatestnews.pages.dev/blogs/bbcinternet/img/kalkanis_iplayer_595.png" width="595" height="267" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" /></span></p>

<p>So how have we done it? </p>

<p>To start with we've split iPlayer into a front end application written in PHP and a bunch of back end services. Our PHP layer is designed to be infinitely horizontally scalable. We don't maintain state or persist data through the PHP layer. This allows us to easily scale out the iPlayer application onto new servers and into new data centres as our traffic grows.</p>

<p>On the backend we use a combination of Java and Perl. The programme data publishing services have evolved from those we used for iPlayer v2. This is a Perl web service engine we call Dynamite, written using DBIx::Class and Catalyst. It provides a large range of endpoints allowing application developers to pick the feed best suited for their device. We return XML or JSON, structured as iPlayer Object Notation (ION). ION is used not just by PC iPlayer, but across the BBC on any website needing up to date programme metadata. ION and its underlying data structures rely on a constantly evolving and reactive caching strategy.</p>

<p>The social networking services are developed to the <a href="http://wiki.opensocial.org/index.php">OpenSocial</a> 0.8.1 <a href="http://www.opensocial.org/Technical-Resources/opensocial-spec-v081/restful-protocol">RESTful API specification</a> and built on the <a href="http://shindig.apache.org/">Shindig</a> code-base.</p>

<p>The new programme play and favourites tracking service which we call FUSE is a Java web service using Spring and Hibernate. We chose to stick with mySQL for the user activity database because this data is shared between FUSE and Dynamite. </p>

<p>Search and recommendations are also split out as separate services. This allows us to continually refine and improve these with minimal or no impact on service clients. It also allows us to use the features we've developed for iPlayer across other areas of bbc.co.uk.</p>

<p>Finally there is the issue of scaling and performance. We aim to serve all the iPlayer pages even in our peak traffic periods in under two seconds with the majority of requests served in under one second. Our site needs to be available 24 hours a day, 365 days a year. We minimise downtime by ensuring our site can remain up and active even when we lose 50% of our capacity. We implement safety modes in the service that switch off low priority activity when the service comes under load. Non-essential activities are handled asynchronously by message queues. Using Memcached we cache serialised objects and collections ready for quick reads.</p>

<p>We have only just started on the journey of personalising iPlayer and have lots of cool features coming along. Look out for personalised features appearing on the other iPlayer platforms including tablets, TVs, smart Phones and gaming consoles.</p>

<p><em>Marina Kalkanis is Senior Technical Architect, BBC iPlayer.</em></p>

<p>Read other recent posts on BBC iPlayer:<br />
<ul><li><a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/06/coloured_subtitles_rolling_out.html">Introducing coloured subtitles on BBC iPlayer</a></li><li><a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/06/bbc_iplayer_on_the_ipad_update.html">BBC iPlayer on the iPad update: live streaming of World Cup</a></li><li><a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/06/bbc_iplayer_press_pack_for_may.html">BBC iPlayer press pack for May 2010 </a></li><li><a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/06/audience_research_and_bbc_ipla.html">Audience research and BBC iPlayer</a></li><li><a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/06/feedback_on_the_iplayer_beta.html">Your feedback on the iPlayer beta</a></li><li><a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/06/going_social_with_bbc_iplayer.html">Going Social with the BBC iPlayer Beta</a></li><li><a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/05/hello_im_james_hewines_the.html">Behind the scenes of BBC iPlayer</a></li><li><a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/05/bbc_iplayer_on_the_ipad.html">BBC iPlayer on the iPad</a></li><li><a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/05/bbc_iplayer_press_pack_for_apr.html">BBC iPlayer press pack for April 2010</a></li><li><a href="https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/05/introducing_the_all_new_bbc_ip.html">Introducing the all new BBC iPlayer (This time it's personal)</a></li></ul><br />
</p>]]></description>
         <dc:creator>Marina Kalkanis 
Marina Kalkanis
</dc:creator>
	<link>https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/06/under_the_bonnet_of_bbc_iplaye.html</link>
	<guid>https://bbclatestnews.pages.dev/blogs/bbcinternet/2010/06/under_the_bonnet_of_bbc_iplaye.html</guid>
	<category>iPlayer</category>
	<pubDate>Mon, 28 Jun 2010 15:00:00 +0000</pubDate>
</item>

<item>
	<title>iPlayer Day: Performance tricks behind the scenes</title>
	<description><![CDATA[<p>Remember this? </p>

<p><a href="http://www.flickr.com/photos/bbccouk/3100266536/" title="oldiplayer by bbccouk, on Flickr"><img src="http://farm4.static.flickr.com/3211/3100266536_94ecf84539_o.jpg" width="430" height="309" alt="oldiplayer" /></a></p>

<p>This was the look of the BBC iPlayer homepage that we went live with in July of 2007. In those days we were delivering a few hundred TV programmes that could only be viewed by download to Windows PC. Looking back at them now these pages look pretty dull and empty and it was a challenge to get them to change a few times a day.</p>

<p>Now we deliver thousands of TV and Radio programmes. Seems like every day when I get in to work someone has dreamt up a new device to serve iPlayer content to or a new BBC service that wants to contribute programmes into iPlayer. I would never have guessed that the BBC had so many different TV and Radio stations nor that it made such a huge set of programmes.</p>

<p><strike>Today's iPlayer site is built by the iPlayer Publishing Services team.</strike> The server side components for today's iPlayer site are built by the iPlayer Publishing Services team. </p>

<p><br />
We are a group of OO perl/Catalyst/mysql developers who are working hard to make the iPlayer pages as rich and engaging as possible while serving 9 million page views a day each in under 2 seconds.</p>

<p>How do we do it? </p>

<p>We use every performance trick we can think of. Our database is flattened, denormalised and heavily indexed to make sql queries as quick as possible. For each query we get we build an abstraction we call our blocklist. These are the lists of programmes on the pages. We serialise these perl objects into memcached ready to reuse for a fixed period of time. We spider our object building to always ensure we have a memcached ready.</p>

<p>iPlayer site traffic gets up to nearly one thousand concurrent requests per second. We share head-end serving with the rest of bbc.co.uk traffic which is handled by 18 Apache web-servers running Apache 2.2 and mod_cache. Behind these sit two Zeus ZXTM load balancing/http cache servers which distribute traffic our eight application servers. Our application server config is Apache2.2/OOperl/Catalyst/memcached. Behind these are 2 mySql DB servers one master and one slave.</p>

<p>In addition to the iPlayer site pages we also serve Atom feeds for all the iPlayer traffic. There are feeds for every programme taste and type of user from <a href="https://bbclatestnews.pages.dev/iplayer/tv/cbbc">CBBC</a> educational TV programmes to <a href="https://bbclatestnews.pages.dev/iplayer/radio/bbc_radio_foyle">Radio Foyle</a> daily schedules.</p>

<p>Things we are working on for next year are ways of making iPlayer more personal, we'll also be refining the way we publish programmes through our player to come up with seamless ways of moving from one programme to the next.</p>

<p><em>Marina Kalkanis is Senior Technical Architect, BBC Future Media & Technology</em></p>]]></description>
         <dc:creator>Marina Kalkanis 
Marina Kalkanis
</dc:creator>
	<link>https://bbclatestnews.pages.dev/blogs/bbcinternet/2008/12/iplayer_day_performance_tricks.html</link>
	<guid>https://bbclatestnews.pages.dev/blogs/bbcinternet/2008/12/iplayer_day_performance_tricks.html</guid>
	<category>iPlayer</category>
	<pubDate>Fri, 12 Dec 2008 13:25:27 +0000</pubDate>
</item>


</channel>
</rss>

 
