With the introduction of the video tag in HTML5 and many friends acquiring iPads I did some reading on this topic and wrote below {video} tag which allows the integration of videos on pages or news articles. In order to include it you just need to create a new file function.video.php with below code in the plugins folder of your installation.
I think the code speaks for itself but maybe a few comments for the not so obvious stuff. First the "bgrd_class" allows to set a background that is in line with the website design. Just look at the top video at http://www.broadwayconnection.at/ The javascript code overcomes two problems: the video tag has no default mute parameter and iPad ignores the autoplay parameter. Any further questions just post in the forum.
Code: Select all
<?php
function smarty_cms_function_video($params, &$smarty)
{
global $gCms;
#path to Flash player
$flashPlayer = '/tools/player.swf';
#mp4 is mandatory for fallback reasons
if (!isset($params['mp4'])) exit;
#set movie paths
$mp4 = isset($params['mp4']) ? $params['mp4'] : '';
$ogg = (isset($params['ogg'])&&$params['ogg']<>'') ? "<source src='".$params['ogg']."' type='video/ogg'>\n" : '';
$webm = (isset($params['webm'])&&$params['webm']<>'') ? "<source src='".$params['webm']."' type='video/webm'>\n" : '';
#identify if iPad browser
$iPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');
#set image for all browsers but iPad
$image = isset($params['image']) ? $params['image'] : '';
$poster = $iPad ? '' : " poster='".$image."' ";
#set autoplay for all browsers
$start = (isset($params['start'])&&$params['start']=='true') ? '&autostart=true' : '';
$start5 = (isset($params['start'])&&$params['start']=='true') ? "autoplay='autoplay' " : '';
$startPad = (isset($params['start'])&&$params['start']=='true') ? "pElement.load();\npElement.play();\n" : '';
#set mute for all browsers
$mute = (isset($params['mute'])&&$params['mute']=='true') ? '&mute=true' : '';
$mute5 = (isset($params['mute'])&&$params['mute']=='true') ? "pElement.muted=true;\n" : '';
#set custom object parameters or set default values
$height = isset($params['height']) ? $params['height'] : '348';
$width = isset($params['width']) ? $params['width'] : '438';
$objId = isset($params['id']) ? $params['id'] : 'video1';
$bgrdClass = isset($params['bgrd']) ? $params['bgrd'] : '';
#set additional Flash variables
$flashvars = isset($params['flashvars']) ? $params['flashvars'] : '';
$flashvars = $flashvars.$mute;
$stream = (isset($params['stream'])&&$params['stream']=='true') ? '&streamer=/uploads/videos/xmoov.php' : '';
#create html5 video tag
$video ="<video id='".$objId."'".$poster." width='".$width."' height='".$height."' controls='controls' ".$start5.">\n";
$video .="<source src='".$mp4."' type='video/mp4'>\n";
$video .=$webm.$ogg;
#create html code with Flash fallback (with optional standard background)
if ($bgrdClass<>'') {
$text = "<div class='".$bgrdClass."'>\n";
$text .= "<div style='color: white; margin: 0 0 0 73px;'>\n";
$text .= $video;
$text .= "<object id='obj_".$objId."' type='application/x-shockwave-flash' data='".$flashPlayer."' style='height: 350px; width: 586px;'>\n";
} else {
$text = "<div>\n".$video;
$text .= "<object id='o".$objId."' type='application/x-shockwave-flash' data='".$flashPlayer."' height='".$height."' width='".$width."'>\n";
}
#set Flash parameters
$text .="<param name='movie' value='".$flashPlayer."' ></param>\n";
$text .="<param name='allowScriptAccess' value='always'></param>\n";
$text .="<param name='allowFullScreen' value='true'></param>\n";
$text .="<param name='quality' value='high'></param>\n";
$text .="<param name='wmode' value='transparent'></param>\n";
$text .="<param name='FlashVars' value='file=".$mp4.$stream.$start.$flashvars."&image=".$image."&skin=/tools/stylish.swf&plugins=gapro-1&gapro.accountid=your_google_id'></param>\n";
#message in case neither video tag nor Flash player worked
$text .="Weder VIDEO Tag noch Flash Player wurden erkannt. Es ist Zeit Ihren Browser zu erneuern.<br />";
$text .="Hier können Sie die <a href='".$mp4."'>mp4-Version</a> downloaden.<br />";
$text .="<br />\n<img src='".$image."' alt='".$objId."' />\n";
$text .="</object></video>\n";
#javascript code for html5 mute or iPad autostart
if ($iPad or $mute5<>'') {
$text .="<__script__ type='text/javascript'>\n";
$text .="window.onload = function() {\n";
$text .="var pElement = document.getElementById('".$objId."');\n";
$text .=$mute5;
if ($iPad) $text .= $startPad;
$text .="};\n</script>\n";
}
#finish enclosing DIV and return full code
$text .="</div>\n";
if ($bgrdClass<>'') $text .= "</div>\n";
return $text;
}
function smarty_cms_help_function_video()
{
?>
<h3>What does this do?</h3>
<p>Creates a <code>video</code> tag which can be played by modern browswers. It contains a flash player as fallback in case of older browsers or not supported video type.</p>
<h3>How do I use it?</h3>
<p>Just insert the tag into your template/page like: <code>{video id="video1" mp4="/path/to/movie.mp4" ogg="/path/to/movie.ogg" webm="/path/to/movie.webm" image="/path/to/image.jpg"}</code></p>
<h3>What parameters does it take?</h3>
<ul>
<li><em>(required)</em> <tt>mp4</tt> - Filename and full path of mp4 video. Played by Safari (incl. iPad), IE9+ and fallback Flash player.</li>
<li><em>(recommended)</em> <tt>ogg</tt> - Filename and full path of ogg video. Played by Firefox, Chrome and Opera.</li>
<li><em>(recommended)</em> <tt>webm</tt> - Filename and full path of webm video. Played by Chrome, Opera and Firefox 4+.</li>
<li><em>(recommended)</em> <tt>image</tt> - Filename and full path of placeholder image.</li>
<li><em>(recommended)</em> <tt>height</tt> - Height of player/movie.</li>
<li><em>(recommended)</em> <tt>width</tt> - Width of player/movie.</li>
<li><em>(recommended)</em> <tt>id</tt> - The object id, needed for proper XHTML when using tag more than once.</li>
<li><em>(optional)</em> <tt>start</tt> - Set to 'true' to autostart movie.</li>
<li><em>(optional)</em> <tt>mute</tt> - Set to 'true' to mute movie.</li>
<li><em>(optional)</em> <tt>stream</tt> - Set to 'true' to enable Flash http-streaming.</li>
<li><em>(optional)</em> <tt>flashvars</tt> - Set any other player variables (start with '&').</li>
<li><em>(optional)</em> <tt>bgrd</tt> - Set class for enclosing DIV,e.g. for background image.</li>
</ul>
<p>Assumes Flash player installed at '/tools/player.swf'. The player can be downloaded from <a href="http://www.longtailvideo.com/">http://www.longtailvideo.com/</a></p>
<?php
}
function smarty_cms_about_function_video()
{
?>
<p>Author: GSM</p>
<p>Version: 1.0</p>
<p>Change History:<br/>
0.1 - Initial release with basic Flash player<br/>
0.5 - Flash player with mute, autoplay and streaming options<br/>
0.8 - HTML5 compatible <code>video</code> tag implementation with Flash fallback<br/>
0.9 - Support for iPad added<br/>
1.0 - Code clean up<br/>
</p>
<?php
}
?>