/** * Vroom callback * @return void */ function elgg_file_viewer_vroom() { $file_guids = (array) elgg_get_config('elgg_file_viewer_file_guids'); $file_guids = array_unique($file_guids); foreach ($file_guids as $guid) { $entity = get_entity($guid); if (!$entity instanceof ElggFile) { continue; } $entity_mime = $entity->getMimeType(); list($base_type, $ext) = explode('/', $entity_mime); $mimes = []; switch ($base_type) { case 'video': $mimes = ['video/mp4', 'video/webm', 'video/ogv']; break; case 'audio': $mimes = ['audio/mpeg', 'audio/ogg', 'video/wav']; break; } foreach ($mimes as $mime) { if ($mime == $entity_mime) { continue; } list(, $ext) = explode('/', $mime); $url = elgg_file_viewer_get_media_url($entity, $ext); if (!$url) { elgg_file_viewer_convert_file($entity, $ext); } } } }
$mimes = array_unique([$entity_mime, 'video/mp4', 'video/webm', 'video/ogv']); $attr['poster'] = $entity->icontime ? $entity->getIconURL('master') : elgg_get_simplecache_url('elgg_file_viewer/video.jpg'); break; case 'audio': $tag = 'audio'; $mimes = array_unique([$entity_mime, 'audio/mpeg', 'audio/ogg', 'video/wav']); $attr['poster'] = $entity->icontime ? $entity->getIconURL('master') : elgg_get_simplecache_url('elgg_file_viewer/audio.jpg'); break; } $sources = ''; foreach ($mimes as $mime) { if ($mime == $entity_mime) { $url = elgg_get_download_url($entity); } else { list(, $ext) = explode('/', $mime); $url = elgg_file_viewer_get_media_url($entity, $ext); } if ($url) { $sources .= elgg_format_element('source', ['src' => $url, 'type' => $mime]); } } elgg_load_css('videojs'); ?> <div class="elgg-col elgg-col-1of1 clearfix"> <?php echo elgg_format_element($tag, $attr, $sources); ?> </div> <script> require(['elgg_file_viewer/apps/videojs'], function (videojs) { videojs('<?php
$webm = elgg_file_viewer_get_media_url($entity, 'webm'); $ogv = elgg_file_viewer_get_media_url($entity, 'ogv'); echo <<<HTML \t\t<video {$attr}> \t\t\t<source src="{$mp4}" type="video/mp4" /> \t\t\t<source src="{$webm}" type="video/webm" /> \t\t\t<source src="{$ogv}" type="video/ogg" /> \t\t</video> HTML; } else { echo "<video src=\"{$source}\" {$attr}></video>"; } break; case 'audio': if ($ffmpeg) { $mpeg = elgg_file_viewer_get_media_url($entity, 'mpeg'); $wav = elgg_file_viewer_get_media_url($entity, 'wav'); $ogg = elgg_file_viewer_get_media_url($entity, 'ogg'); echo <<<HTML \t\t<audio {$attr}> \t\t\t<source src="{$ogg}" type="audio/ogg" /> \t\t\t<source src="{$mpeg}" type="audio/mpeg" /> \t\t\t<source src="{$wav}" type="audio/wav" /> \t\t</audio> HTML; } else { echo "<audio src=\"{$source}\" {$attr}></audio>"; } break; } echo '</div>';