<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MediaElement.js Blog</title>
	<atom:link href="http://blog.mediaelementjs.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mediaelementjs.com</link>
	<description>HTML5  and  player with Flash fallforward</description>
	<lastBuildDate>Wed, 26 Jan 2011 02:45:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>2.0.5 Release Notes</title>
		<link>http://blog.mediaelementjs.com/2011/01/2-0-5-release-notes/</link>
		<comments>http://blog.mediaelementjs.com/2011/01/2-0-5-release-notes/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 02:45:48 +0000</pubDate>
		<dc:creator>johndyer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mediaelementjs.com/?p=27</guid>
		<description><![CDATA[Added error object to player Adjusted popup timer and progress bar Fixed media URL escaping Stopped sending poster to plugin Silverlight culture update Added back reference check (also makes jQuery usage easier) Added stop() function to mediaelement timerupdate still fires when paused (plugins) Added Security.allowDomain(&#8220;*&#8221;) to Flash so it can be used on different domains ]]></description>
			<content:encoded><![CDATA[<ul>
<li>Added error object to player</li>
<li>Adjusted popup timer and progress bar</li>
<li>Fixed media URL escaping</li>
<li>Stopped sending poster to plugin</li>
<li>Silverlight culture update</li>
<li>Added back reference check (also makes jQuery usage easier)</li>
<li>Added stop() function to mediaelement</li>
<li>timerupdate still fires when paused (plugins)</li>
<li>Added Security.allowDomain(&#8220;*&#8221;) to Flash so it can be used on different domains</li>
<li>Fixed progress bar for Firefox 3 with Ogg files</li>
<li>Prevented Flash from re-creating the player when show/hide restarts it</li>
<li>Fixed initial volume level in non-HTML5 players</li>
<li>Made PNG8 versions of controls images (for IE6)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediaelementjs.com/2011/01/2-0-5-release-notes/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Re-writing Flash and Silverlight Detection</title>
		<link>http://blog.mediaelementjs.com/2010/11/re-writing-flash-and-silverlight-detection/</link>
		<comments>http://blog.mediaelementjs.com/2010/11/re-writing-flash-and-silverlight-detection/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 18:03:43 +0000</pubDate>
		<dc:creator>johndyer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mediaelementjs.com/?p=20</guid>
		<description><![CDATA[The initial release of MediaElement.js included Flash detection derived from SWFObject and Silverlight detection from Microsoft&#8217;s own Silverlight.js files. The problem was that this code didn&#8217;t adhere to a common coding standard, and I received a few negative comments on the code. So as part of the process of re-writing MediaElement.js to be JSLint compliant and work well with ]]></description>
			<content:encoded><![CDATA[<p>The initial release of MediaElement.js included Flash detection derived from <a href="http://code.google.com/p/swfobject/">SWFObject</a> and Silverlight detection from Microsoft&#8217;s own Silverlight.js files.</p>
<p>The problem was that this code didn&#8217;t adhere to a common coding standard, and I received a <a href="http://github.com/johndyer/mediaelement/issues#issue/11">few negative comments</a> on the code.</p>
<p>So as part of the process of re-writing MediaElement.js to be JSLint compliant and work well with YICompressor, I&#8217;ve built a new plugin detection system that very small and can be extended to work with other browser plugins like Adobe Reader if someone wanted to.</p>
<p>As usual IE does things one way (ActiveX) and other browsers do it another way (navigator.plugins), so the detection scheme has to check for both. Another difficulty is that Silverlight does not return a version number in IE, and instead only returns true or false to an isVersionSupported function. So to get the version for IE, you have to loop through all possibilities which is pretty nasty.</p>
<p>Here is the completed code for the PluginDetector object, which includes the core detection logic as well as Flash and Silverlight detection routines:</p>
<pre class="brush:js">mejs.PluginDetector = {

	// main public function to test a plug version number PluginDetector.hasPluginVersion('flash',[9,0,125]);
	hasPluginVersion: function(plugin, v) {
		var pv = this.plugins[plugin];
		v[1] = v[1] || 0;
		v[2] = v[2] || 0;
		return (pv[0] &gt; v[0] || (pv[0] == v[0] &amp;&amp; pv[1] &gt; v[1]) || (pv[0] == v[0] &amp;&amp; pv[1] == v[1] &amp;&amp; pv[2] &gt;= v[2])) ? true : false;
	},

	// cached values
	nav: window.navigator,
	ua: window.navigator.userAgent.toLowerCase(),		

	// stored version numbers
	plugins: [],

	// runs detectPlugin() and stores the version number
	addPlugin: function(p, pluginName, mimeType, activeX, axDetect) {
		this.plugins[p] = this.detectPlugin(pluginName, mimeType, activeX, axDetect);
	},

	// get the version number from the mimetype (all but IE) or ActiveX (IE)
	detectPlugin: function(pluginName, mimeType, activeX, axDetect) {

		var version = [0,0,0],
			d,
			i,
			ax;

		// Firefox, Webkit, Opera
		if (typeof(this.nav.plugins) != 'undefined' &amp;&amp; typeof this.nav.plugins[pluginName] == 'object') {
			d = this.nav.plugins[pluginName].description;
			if (d &amp;&amp; !(typeof this.nav.mimeTypes != 'undefined' &amp;&amp; this.nav.mimeTypes[mimeType] &amp;&amp; !this.nav.mimeTypes[mimeType].enabledPlugin)) {
				version = d.replace(pluginName, '').replace(/^\s+/,'').replace(/\sr/gi,'.').split('.');
				for (i=0; i&lt;version.length; i++) {
					version[i] = parseInt(version[i], 10);
				}
			}
		// Internet Explorer / ActiveX
		} else if (typeof(window.ActiveXObject) != 'undefined') {
			try {
				ax = new ActiveXObject(activeX);
				if (ax) {
					version = axDetect(ax);
				}
			}
			catch (e) { }
		}
		return version;
	}
};

// Add Flash detection
mejs.PluginDetector.addPlugin('flash','Shockwave Flash','application/x-shockwave-flash','ShockwaveFlash.ShockwaveFlash', function(ax) {
	// adapted from SWFObject
	var version = [],
		d = ax.GetVariable("$version");
	if (d) {
		d = d.split(" ")[1].split(",");
		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
	}
	return version;
});

// Add Silverlight detection
mejs.PluginDetector.addPlugin('silverlight','Silverlight Plug-In','application/x-silverlight-2','AgControl.AgControl', function (ax) {
	// Silverlight cannot report its version number to IE
	// but it does have a isVersionSupported function, so we have to loop through it to get a version number.
	// adapted from http://www.silverlightversion.com/
	var v = [0,0,0,0],
		loopMatch = function(ax, v, i, n) {
			while(ax.isVersionSupported(v[0]+ "."+ v[1] + "." + v[2] + "." + v[3])){
				v[i]+=n;
			}
			v[i] -= n;
		};
	loopMatch(ax, v, 0, 1);
	loopMatch(ax, v, 1, 1);
	loopMatch(ax, v, 2, 10000); // the third place in the version number is usually 5 digits (4.0.xxxxx)
	loopMatch(ax, v, 2, 1000);
	loopMatch(ax, v, 2, 100);
	loopMatch(ax, v, 2, 10);
	loopMatch(ax, v, 2, 1);
	loopMatch(ax, v, 3, 1);		

	return v;
});</pre>
<p>Then it can be used with the following code:</p>
<pre class="brush:javascript">// get the version
var version = PluginDetector.plugins['flash'];

// check for specific verison
var hasVersion = PluginDetector.hasPluginVersion('flash', [9,0,125]);</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediaelementjs.com/2010/11/re-writing-flash-and-silverlight-detection/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Plugins for WordPress and Drupal</title>
		<link>http://blog.mediaelementjs.com/2010/09/plugins-for-wordpress-and-drupal/</link>
		<comments>http://blog.mediaelementjs.com/2010/09/plugins-for-wordpress-and-drupal/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 18:00:37 +0000</pubDate>
		<dc:creator>johndyer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mediaelementjs.com/?p=17</guid>
		<description><![CDATA[Matt Farina has generously created a Drupal plugin for MediaElement.js. I&#8217;ve also put together a WordPress plugin that allows you to use the simple short code [ video src="myvideo.mp4"] MediaElement.js for WordPress MediaElement.js for Drupal]]></description>
			<content:encoded><![CDATA[<p><a href="https://drupal.org/project/mediaelement">Matt Farina</a> has generously created a Drupal plugin for MediaElement.js.</p>
<p>I&#8217;ve also put together a WordPress plugin that allows you to use the simple short code [ video src="myvideo.mp4"]</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/media-element-html5-video-and-audio-player/stats/">MediaElement.js for WordPress</a></li>
<li><a href="https://drupal.org/project/mediaelement">MediaElement.js for Drupal</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediaelementjs.com/2010/09/plugins-for-wordpress-and-drupal/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Updates for IE9 Beta 1 and Safari</title>
		<link>http://blog.mediaelementjs.com/2010/08/updates-for-ie9-and-safari/</link>
		<comments>http://blog.mediaelementjs.com/2010/08/updates-for-ie9-and-safari/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 17:52:47 +0000</pubDate>
		<dc:creator>johndyer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mediaelementjs.com/?p=13</guid>
		<description><![CDATA[I&#8217;ve made a few small tweaks for IE9 beta 1 problems and I&#8217;ve also added support for Safari&#8217;s fullscreen option. Here is the state of fullscreen support: Safari 5 &#8211; native fullscreen, accessible through JavaScript Chrome &#8211; no fullscreen (although it says it supports it) Firefox &#8211; native fullscreen, only available through context menu IE9 &#8211; no ]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve made a few small tweaks for IE9 beta 1 problems and I&#8217;ve also added support for Safari&#8217;s fullscreen option. Here is the state of fullscreen support:</p>
<ul>
<li>Safari 5 &#8211; native fullscreen, accessible through JavaScript</li>
<li>Chrome &#8211; no fullscreen (although it says it supports it)</li>
<li>Firefox &#8211; native fullscreen, only available through context menu</li>
<li>IE9 &#8211; no fullscreen</li>
<li>Opera &#8211; no fullscreen</li>
</ul>
<p>Here&#8217;s hoping more browsers offer a true full screen for video.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediaelementjs.com/2010/08/updates-for-ie9-and-safari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 and the Today of the Web</title>
		<link>http://blog.mediaelementjs.com/2010/08/html5-and-the-today-of-the-web/</link>
		<comments>http://blog.mediaelementjs.com/2010/08/html5-and-the-today-of-the-web/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 17:50:22 +0000</pubDate>
		<dc:creator>johndyer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mediaelementjs.com/?p=11</guid>
		<description><![CDATA[MediaElement.js was originally built to show at ECHO conference. Here are the slides that Nathan Smith and I gave demoing HTML5 and CSS3 features that are broadly usable today. Echo HTML5 View more presentations from Nathan Smith]]></description>
			<content:encoded><![CDATA[<p>MediaElement.js was originally built to show at ECHO conference. Here are the slides that Nathan Smith and I gave demoing HTML5 and CSS3 features that are broadly usable today.</p>
<div style="width:425px" id="__ss_4851975"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/nathansmith/echo-html5" title="Echo HTML5">Echo HTML5</a></strong><object id="__sse4851975" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=echohtml5-100727153119-phpapp02&#038;stripped_title=echo-html5&#038;userName=nathansmith" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4851975" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=echohtml5-100727153119-phpapp02&#038;stripped_title=echo-html5&#038;userName=nathansmith" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/nathansmith">Nathan Smith</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediaelementjs.com/2010/08/html5-and-the-today-of-the-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MediaElement.js Released</title>
		<link>http://blog.mediaelementjs.com/2010/07/mediaelementjs-released/</link>
		<comments>http://blog.mediaelementjs.com/2010/07/mediaelementjs-released/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 17:30:17 +0000</pubDate>
		<dc:creator>johndyer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mediaelementjs.com/?p=4</guid>
		<description><![CDATA[As a demo for ECHO conference, I&#8217;m releasing the very first version of MediaElement.js which aims to do something new in the HTML5 world. All HTML5 video players out there today have the following behavior. HTML5 video player for HTML5 enabled browsers Completely separate Flash player for other browsers Instead, MediaElement.js is a set of Flash and ]]></description>
			<content:encoded><![CDATA[<p>As a demo for <a href="http://www.echoconference.com/">ECHO conference</a>, I&#8217;m releasing the very first version of MediaElement.js which aims to do something new in the HTML5 world. All HTML5 video players out there today have the following behavior.</p>
<ol>
<li>HTML5 video player for HTML5 enabled browsers</li>
<li>Completely separate Flash player for other browsers</li>
</ol>
<p>Instead, MediaElement.js is a set of Flash and Silverlight plugins that implement the HTML5 MediaElement API spec. So instead of using Flash as a fall<em>back</em>, MediaElement.js uses Flash as a fall<em>forward</em> that mimics HTML5 for older browsers. Here&#8217;s how MediaElement.js works:</p>
<ol>
<li>Upgrade all browsers to HTML5 spec</li>
<li>Build a player on top of the common framework</li>
</ol>
<p>Here&#8217;s what&#8217;s happening</p>
<p><span style="font-size: 13px; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px;"><img class="alignnone size-full wp-image-5" title="medialement-api" src="http://blog.mediaelementjs.com/wp-content/uploads/2010/11/medialement-api.png" alt="" width="500" height="361" /></span></p>
<p><span style="font-size: 13px; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px;"> </span>The added bonus to this approach is that it levels the codec playing field. In addition to adding HTML5 to IE and other older browsers, this approach also adds H.264 to Firefox and Opera, and when Flash gains WebM capability, it will be able to add WebM to Safari.</p>
<p>Hope you enjoy it!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediaelementjs.com/2010/07/mediaelementjs-released/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

