Hi, it seems that Omeka is failing to correctly detect mime types on upload. I've uploaded a video as both webm and mp4 but they are ingested as video/quicktime and application/octet-stream (rather than video/webm and video/mp4), respectively.
So, I'm wondering if this is a bug/error, or if Omeka uses more generic mime types for some reason.
I'm trying to write "HTML5-with-Flash-Fallback" video support into a theme but am having a hard time detecting mime type of each file.
I don't want to write a plugin that changes Omeka's behavior; I just want to enhance video playback at a theme level for now. Is this possible?
It seems likely that I'm missing/misunderstanding something here, so any help would be appreciated. Here's the code I'm using so far.
This is just to create download links for images and (supported) video...
<?php
while(loop_files_for_item()):$file = get_current_file();
//check mime type for VideoJS compatibility.
//NOTE: last item in array catches any files whose mimetype was not recorded by Omeka at ingest
//TROUBLESHOOT: if WebM,MP4,OggVideo files appear in the sidebar,
//then Omeka has not correctly recorded it's mimetype
// or the file was improperly encoded.
$mime = $file->getMimeType;
$videoJS = array('video/mp4','video/ogg','video/webm','');
//if image --> bypass display but include the download link...
if (item_has_thumbnail())
{
foreach ($item->Files as $file){
echo '<div style="clear:both;padding:2px;"><a href="'. file_download_uri($file,'fullsize'). '" class="download-file">'. $file->original_filename. '</a></div> ';
}
}
//if compatible video --> bypass display but include the download link...
elseif ( array_search($mime, $videoJS) !== false )
{
echo '<div style="clear:both;padding:2px;"><a href="'. file_download_uri($file). '" class="download-file">'. $file->original_filename. '</a></div> ';
}
//all others...
else {
display_files_for_item();
}
endwhile;
?>
The actual video player (using the VideoJS script) needs to be written like so, which is the bigger issue demanding specific mimetypes:
<!-- Begin VideoJS -->
<div class="video-js-box">
<!-- Using the Video for Everybody Embed Code http://camendesign.com/code/video_for_everybody -->
<video id="example_video_1" class="video-js" width="640" height="264" controls="controls" preload="auto" poster="http://video-js.zencoder.com/oceans-clip.png">
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm; codecs="vp8, vorbis"' />
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg; codecs="theora, vorbis"' />
<!-- Flash Fallback. Use any flash video player here. Make sure to keep the vjs-flash-fallback class. -->
<object id="flash_fallback_1" class="vjs-flash-fallback" width="640" height="264" type="application/x-shockwave-flash"
data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf">
<param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" />
<param name="allowfullscreen" value="true" />
<param name="flashvars" value='config={"playlist":["http://video-js.zencoder.com/oceans-clip.png", {"url": "http://video-js.zencoder.com/oceans-clip.mp4","autoPlay":false,"autoBuffering":true}]}' />
<!-- Image Fallback. Typically the same as the poster image. -->
<img src="http://video-js.zencoder.com/oceans-clip.png" width="640" height="264" alt="Poster Image"
title="No video playback capabilities." />
</object>
</video>
<!-- Download links provided for devices that can't play video in the browser. -->
<p class="vjs-no-video"><strong>Download Video:</strong>
<a href="http://video-js.zencoder.com/oceans-clip.mp4">MP4</a>,
<a href="http://video-js.zencoder.com/oceans-clip.webm">WebM</a>,
<a href="http://video-js.zencoder.com/oceans-clip.ogv">Ogg</a><br>
<!-- Support VideoJS by keeping this link. -->
<a href="http://videojs.com">HTML5 Video Player</a> by VideoJS
</p>
</div>
<!-- End VideoJS -->
Thanks -- Erin