broadcast-brainstorming

From Microformats Wiki
Jump to navigation Jump to search

Brainstorming for a Broadcast Microformat

This is a brainstorm for Internet radio and TV streams i.e real-time streams corresponding to radio and TV stations rather than individual items or collections of content (as currently proposed for hAudio).

The scope could also encompass broadcast radio and TV if this is considered to be useful in an Internet context.

Examples can be found here broadcast-examples

Contributors

The Problem

The web provides an alternative transmission medium for radio and TV stations, enabling these to reach a global audience. New Internet-only services have also appeared. A large number of services are now available and there are many web-based directories listing Internet radio and TV stations under various categories. These directories have to be maintained by hand because the information cannot easily be collected automatically from web sites. The information these directories provide is not easily extracted by web browsers and devices such as Internet Radios.

Elements that come up often in practice

The metadata is either general information (e.g. station name) or technical information (e.g. bandwidth)

General information

  • Station name (could use hCard's "organization-unit")
  • Broadcaster (could use hCard's "organization-name")
  • Description (could also be hCard's "note")
  • Image URL (logo) (could use hCard's "logo")
  • Category (genre) (could use hCard's "category")
  • Language (used by the station rather than for the description)
  • Location (could use hCard's "adr" & children)
  • Station website (could use hCard's "url")
  • Station email (could use hCard's "e-mail")
  • AM/FM frequency (could use "measure" microformat)
  • Rating (hReview?)
  • "Now playing" information (could use hAudio and hVideo)
  • Schedule information (could use hCalendar)

Technical information

  • stream URL - the direct URL of the stream (.wma, .ra, etc) or the stream's metafile (.asx, .ram, etc)
  • player URL - the URL of a webpage with an embedded media player which plays the stream
  • bandwidth (could use the "measure" microformat)
  • codec (MIME types may be of use here)
  • delivery - optional. unicast | multicast
  • Band (FM/AM/SW/LW/MW/UHF/VHF - used by people generally when talking about radio or TV stations)

Issues

  • Some way is needed to distinguish between radio and TV stations (Most examples don't explicitly distinguish between them).

Possible approaches

New microformat

Define a broadcast microformat.

As with hAudio we could consider splitting content information from format information i.e. define a stream format microformat:

  • hStream (hstream)
    • type optional. MIME type using the "type" attribute of the <a> element
    • bitrate optional. using measure
    • delivery optional. unicast | multicast

Example:

   <a class="hstream" type="audio/vnd.rn-realaudio" href="http://www.bbc.co.uk/radio1/realaudio/media/r1live.ram">
   Real Audio (<abbr class="bitrate hmeasure" title="196608 bit/s">192 Kbps</abbr>, <span class="delivery">multicast</span>)</a>

For television and radio stations we could have:

  • broadcast (as an optional sub-property of hCard or hCalendar)
    • frequency (optional, for radio)
      • band (optional, SW/FM/LW/MW/AM/DAB/...)
      • value (either as a string e.g. "92MHz", or use measure)
      • low/high (to show a range)
      • geo (to give a location - from geo or (using the geo: URI scheme ??) )
    • channel (for television)
      • band (optional, UHF/VHF/DVB-T/DVB-S/...)
      • value
      • provider (optional: certainly required for digital TV where more than one provider can carry the same channel)

Examples:

  • here's an example for a station in Brazil. It operates on FM and AM.
<div class="vcard">
	<strong class="fn org">Rádio Nacional do Alto Solimões</strong>
	<div class="adr">
		<span class="region">Amazonas</span>
		<span class="country-name">Brazil</span>
	</div>
	<div class="broadcast">
		<span class="frequency">
		96.1<span class="band">FM</span>
		</span>
		<span class="frequency">
		670<span class="band">AM</span>
		</span>
	</div>
</div>
  • Here's the same thing but with measure:
<div class="vcard">
<strong class="fn org">Rádio Nacional do Alto Solimões</strong>
<div class="adr">
<span class="locality">Amazonas</span>
<span class="country-name">Brazil</span>
</div>
<div class="broadcast">
<div class="frequency">
<span class="band">FM</span> 
<span class="measure">
<span class="num">96.1</span>
<abbr class="unit" title="MegaHertz">MHz</abbr>
</span>
</div>
<div class="frequency">
<span class="band">AM</span> 
<span class="measure">
<span class="num">670</span>
<abbr class="unit" title="kiloHertz">kHz</abbr> 
</span>
</div>
</div>
</div>
  • This is a card for BBC One from another example, with broadcast information added:
<div class="vcard">
    <div class="adr">
      <div class="org fn">
      <span class="organization-name">BBC</span> <span class="organization-unit">One</span>
      </div>
      <div class="country-name">UK</div>
      <div class="category"><a href="http://en.wikipedia.org/wiki/Mixed" rel="tag">Mixed</a></div>
      <img class="logo" src="http://www0.rdthdo.bbc.co.uk/services/api/res/images/BBCOne_small.gif" 
  alt="BBC One" />
      <a class="url" href="http://www.bbc.co.uk/bbcone/">BBC One Homepage</a>
    </div>
      <div class="broadcast">
          <div class="channel">
          <span class="provider">Freesat</span> channel <span class="value">101</span>
          </div>
          <div class="channel">
          <span class="provider">Freeview</span> channel <span class="value">1</span>
          </div>
          <div class="channel">
          <span class="provider">Sky Digital</span> channel <span class="value">101</span>
          </div>
          <div class="channel">
          <span class="provider">Tiscali</span> channel <span class="value">1</span>
          </div>
          <div class="channel">
          <span class="provider">Virgin Media</span> channel <span class="value">101</span>
       </div>
     </div> 
</div>
  • This is a possible example for a Brazilian television affiliate:
<div class="vcard">
<strong class="fn org">TV Cultura do Amazonas</strong>
<div class="adr">
<span class="locality">Manaus</span>
<span class="region">Amazonas</span>
<span class="country-name">Brazil</span>
</div>
<div class="broadcast">
<span class="channel">
<span class="band">VHF</span>: Channel <span class="value">2</span> 
</span>
<span class="channel">
<span class="band">SDTVB</span>: Channel <span class="value">4</span>
</span>
</div>
</div>
  • the value "hypo-property" (since it's lower than a sub-property!) can be used for stations with with more than one frequency: in this example the units are missing as FM implies a certain range of magnitude.
<div class="vcard">
<b class="fn org">Heart Radio in Sussex</b>
<div class="broadcast">
<i class="frequency">
<span class="value">102.4</span>  and 
<span class="value">103.5</span>
<span class="band">FM</span>
</i>
</div>
(<abbr title="50.9761;0.2293" class="geo">Eastbourne</abbr>)
</div>

but it would be easy to put the units in:

<div class="vcard">
<b class="fn org">Heart Radio in Sussex</b>
<div class="broadcast">
<i class="frequency">
<abbr class="value measure" title="102.4 megaHertz">102.4</abbr>  and 
<abbr class="value measure" title="103.5 megaHertz">103.5</abbr>
<span class="band">FM</span>
</i>
</div>
(<abbr title="50.9761;0.2293" class="geo">Eastbourne</abbr>)
</div>
  • a range:
<div class="vcard">
<strong class="fn org">
<a href="http://www.bbc.co.uk/radio3/" class="url">BBC Radio 3</a>
</strong>
<div class="broadcast">
<span class="frequency">
<span class="low">90.2</span> - <span class="high">92.6</span>
<abbr class="band" title="Frequency Modulation broadcast">FM</abbr>
</span>
</div>
<span class="adr">
<span class="country-name">UK</span>
</span>
</div>
  • shortwave radio frequencies can change according to the time of day: here's an example from the morning frequencies at Radio Australia:
<div class="vevent">
   <strong class="summary">Morning</strong>
   <span class="dtstart" title="9:00+08">9 a.m.</span> - <span class="dtend" title="12:00+08">midday</span>
<div class="broadcast">
   <p class="frequency">
       <span class="band">SW</span>: 
       <span class="value">9660</span>, 
       <span class="value">15230</span>, 
       <span class="value">15240</span>, 
       <span class="value">21725</span>
   </p>
</div>
</div>

if you wanted to use hMeasure, this could be(?)

<div class="broadcast">
   <p class="frequency">
       <span class="band">SW</span>: 
<span class="measure">
       <span class="num">9660</span>, 
       <span class="num">15230</span>, 
       <span class="num">15240</span>, 
       <span class="num">21725</span>
       <span class="unit">kHz</span>
</span>
   </p>
</div>
  • Some stations are available at different frequencies at different locations. Rather than making an hCard for each location, it might be easier to insert the geo data into the frequency block: here's a mockup of some of the information from the BBC Radio 4 website:
<div class="vcard">
<p><span class="fn org">Radio 4</span> can be found on the following channels, frequencies and websites:</p>
<ul class="broadcast">
<li class="frequency">
<strong class="band">DAB</strong> Listed as <q class="value">BBC Radio 4</q>, <q class="value">BBC R4</q>, or <q class="value">Radio 4</q> (more info)
</li>

<li class="frequency">
<strong class="band">FM<strong> <span class="low">92</span> - <span class="high">95</span>, <span class="low">103</span>-<span class="high">105</span>
</li>
<!-- I know the ranges don't quite "work" - how would one get around this without lots of tags though?? -->
<li class="frequency">
<strong class="band">LW</strong> 198
</li>

<li class="frequency">
<strong class="band">MW</strong> Medium Wave is only available in some locations: 
<span class="value">
<abbr class="geo" title="51.507222;-0.1275">London</abbr> 720
</span>; 
<span class="value">
<abbr class="geo" title="50.371397, -4.142431">Plymouth</abbr> 774
</span>; 
[...etc.]
</li>
[...]
</ul>
</div>

Extend scope of hAudio and hVideo

Depending on the degree of overlap between the required metadata fields it may be practical to extend the scope of the proposed hAudio and hVideo microformats. However, it would not be beneficial to the development process, or to end-users, if this adds additional complexity.

Use RDF

The potential number of publishers of this information seems fairly small. (Broadcast licences aren't handed out like candy, but sold for enormous amounts of money to, in practice, a fairly small number of organisations.) Most of the publishers are going to be well-financed either by government or commercial interests, so are likely to have large web publishing teams of experienced designers, programmers and system administrators. The "newbie factor" is less relevant here, so the barrier to entry for RDF is lowered.

RDF is not a format, but a set of concepts which can be serialised in several standardised formats, including RDF/XML, eRDF, RDFa, Turtle, RDF/JSON, etc. An example of describing broadcast information using RDFa embedded in HTML is:

<div xmlns:tv="http://example.com/schema/tv#" typeof="tv:Station">
  <h1 property="tv:stationName"><span property="tv:broadcaster">BBC</span> One</h1>
  <p property="tv:description">Public service broadcaster based in the
  <span property="tv:location">United Kingdom</span>.</p>
  <p>Link: <a href="http://www.bbc.co.uk/bbcone/" rel="tv:url">http://www.bbc.co.uk/bbcone/</a>.</p>
  <p>View: <a href="http://www.bbc.co.uk/iplayer/" rel="tv:playerUrl">http://www.bbc.co.uk/iplayer/</a>.</p>
</div>

This could easily be combined with hCard too:

<div xmlns:tv="http://example.com/schema/tv#" typeof="tv:Station" class="vcard">
  <div class="fn org">
    <h1 property="tv:stationName" class="organization-unit">
      <span property="tv:broadcaster" class="organization-name">BBC</span>
      One
    </h1>
  </div>
  <p property="tv:description" class="note adr">
    Public service broadcaster based in the
    <span property="tv:location" class="country-name">United Kingdom</span>.
  </p>
  <p>
    Link:
    <a href="http://www.bbc.co.uk/bbcone/" rel="tv:url" class="url">
      http://www.bbc.co.uk/bbcone/
    </a>.
  </p>
  <p>
    View:
    <a href="http://www.bbc.co.uk/iplayer/" rel="tv:playerUrl" class="url">
      http://www.bbc.co.uk/iplayer/
    </a>.
  </p>
</div>

Allowing specialist TV-station software to be able to parse the RDF information out, while naive generalist parsers would simply see an hCard, giving them access to most of the same information, but perhaps in lesser fidelity. That is, the RDF parser will understand that the thing being described is a TV station, whereas the hCard parser will only be able to identify that it's an organisation; the RDF parser will know which URL is intended for general information on the station and which is for viewing programmes, the hCard parser will simply see two URLs.

RDF (especially RDFa) offers a good general purpose solution for marking up this kind of specialist information - information which might be too specialised to justify its own microformat. It can easily be combined with microformats, as per the example above, offering a good hybrid solution.

Combining with other microformats

Examples of how a broadcast microformat could be combined with other microformats.

hAudio & hVideo

"Now Playing" information could be provided using hAudio for radio (e.g. to represent the current song) and hVideo (e.g. to represent the current film) for TV.

hCalendar

An event or a schedule of events for a channel could be signalled using vEvent or hCalendar as child elements.

hCard

Broadcaster / station details could be marked up with hCard.

<div class="vcard">
 <div class="adr">
  <div class="org fn">
   <div class="organization-name">BBC</div>
   <div class="organization-unit">One</div>
  </div>
  <div class="country-name">UK</div>
 </div>
 <div class="category"><a href="http://en.wikipedia.org/wiki/Mixed" rel="tag">Mixed</a></div>
 <img class="logo" src="http://www0.rdthdo.bbc.co.uk/services/api/res/images/BBCOne_small.gif" 
  alt="BBC One" />
 <a class="url" href="http://www.bbc.co.uk/bbcone/">BBC One Homepage</a>
</div>

Measure

A proposed measurement microformat could be used for the frequency.

hReview

Rating could be marked up using hReview.

Comments

The fields listed under technical information are common to the proposed but moribund file microformat proposal.

Related Pages