Brion VIBBER has uploaded a new change for review.
https://gerrit.wikimedia.org/r/314313
Change subject: WIP: optional integration of TMH video.js into MMV
......................................................................
WIP: optional integration of TMH video.js into MMV
Similar to the mwembed popup transform, but not quite. :)
Currently using iframe embed
Todo:
* show play cursor on the placeholders
* autoplay
* use inline hidden player instead of iframe
* fix for aspect ratio
* fix on resize
* make loading not suck
Change-Id: I2343d913936d5b077a56fa9caff1f534dcaf7b75
---
M TimedMediaHandler.hooks.php
M TimedMediaHandler.php
M TimedMediaTransformOutput.php
A resources/mmv.tmh.js
4 files changed, 85 insertions(+), 4 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/TimedMediaHandler
refs/changes/13/314313/1
diff --git a/TimedMediaHandler.hooks.php b/TimedMediaHandler.hooks.php
index beeffa7..f2735d8 100644
--- a/TimedMediaHandler.hooks.php
+++ b/TimedMediaHandler.hooks.php
@@ -32,7 +32,7 @@
// But for now we register them dynamically, because they are config
dependent,
// while we have two players
public static function resourceLoaderRegisterModules( &$resourceLoader
) {
- global $wgTmhWebPlayer;
+ global $wgTmhWebPlayer, $wgTmhUseMultimediaViewer;
$baseExtensionResource = [
'localBasePath' => __DIR__,
@@ -189,6 +189,16 @@
'targets' => [ 'mobile',
'desktop' ],
],
];
+
+ if ( $wgTmhUseMultimediaViewer ) {
+ $resourceModules['mmv.tmh'] =
$baseExtensionResource + [
+ 'scripts' => 'resources/mmv.tmh.js',
+ 'targets' => [ 'desktop' ],
+ 'dependencies' => [
+ 'mmv'
+ ],
+ ];
+ }
}
$resourceLoader->register( $resourceModules );
@@ -201,7 +211,8 @@
$wgResourceModules, $wgExcludeFromThumbnailPurge,
$wgFileExtensions, $wgTmhEnableMp4Uploads,
$wgExtensionAssetsPath,
$wgMwEmbedModuleConfig, $wgEnableLocalTimedText,
$wgTmhFileExtensions,
- $wgTmhTheoraTwoPassEncoding, $wgTmhWebPlayer,
$wgWikimediaJenkinsCI;
+ $wgTmhTheoraTwoPassEncoding, $wgTmhWebPlayer,
$wgWikimediaJenkinsCI,
+ $wgTmhUseMultimediaViewer;
// set config for parser tests
if ( isset( $wgWikimediaJenkinsCI ) && $wgWikimediaJenkinsCI
=== true ) {
@@ -227,6 +238,14 @@
}
}
+ if ( $wgTmhUseMultimediaViewer ) {
+ global $wgMediaViewerExtensions;
+ $formats = [ 'ogg', 'oga', 'ogv', 'ogm', 'opus',
'webm', 'mp4' ];
+ foreach ( $formats as $ext ) {
+ $wgMediaViewerExtensions[$ext] = 'mmv.tmh';
+ }
+ }
+
if ( $wgTmhWebPlayer === 'mwembed' ) {
if ( !class_exists( 'MwEmbedResourceManager' ) ) {
echo "TimedMediaHandler requires the
MwEmbedSupport extension.\n";
diff --git a/TimedMediaHandler.php b/TimedMediaHandler.php
index ada8f33..59bae64 100644
--- a/TimedMediaHandler.php
+++ b/TimedMediaHandler.php
@@ -20,6 +20,9 @@
// Configure the webplayer. Allowed values: mwembed, videojs
$wgTmhWebPlayer = 'mwembed';
+// Integrate with MultimediaViewer extension
+$wgTmhUseMultimediaViewer = false;
+
/*** MwEmbed module configuration: *********************************/
// Show a warning to the user if they are not using an html5 browser with high
quality ogg support
diff --git a/TimedMediaTransformOutput.php b/TimedMediaTransformOutput.php
index 36ce32a..cea2977 100644
--- a/TimedMediaTransformOutput.php
+++ b/TimedMediaTransformOutput.php
@@ -1,6 +1,6 @@
<?php
-class TimedMediaTransformOutput extends MediaTransformOutput {
+class TimedMediaTransformOutput extends ThumbnailImage {
private static $serial = 0;
// Video file sources object lazy init in getSources()
@@ -139,11 +139,14 @@
$this->width = $options['override-width'];
}
- if ( $this->useImagePopUp() && $wgTmhWebPlayer === 'mwembed' ) {
+ if ( $wgTmhWebPlayer === 'mwembed' && $this->useImagePopUp() ) {
$res = $this->getImagePopUp();
+ } else if ( $wgTmhWebPlayer === 'videojs' &&
$this->useImagePlaceholder() ) {
+ $res = $this->getImagePlaceholder();
} else {
$res = $this->getHtmlMediaTagOutput();
}
+
$this->width = $oldWidth;
$this->height = $oldHeight;
return $res;
@@ -164,6 +167,11 @@
&& $this->getPlayerWidth() < $wgMinimumVideoPlayerSize
// Do not do pop-up if its going to be the same size as
inline player anyways
&& $this->getPlayerWidth() <
$this->getPopupPlayerWidth();
+ }
+
+ private function useImagePlaceholder() {
+ global $wgTmhUseMultimediaViewer;
+ return $this->isVideo && !$this->fillwindow && !$this->inline;
}
/**
@@ -243,6 +251,20 @@
}
/**
+ * Return a plain-image version of the image
+ */
+ private function getImagePlaceholder() {
+ $poster = $this->getUrl();
+ $thumb = new ThumbnailImage( $this->file, $poster, false, [
+ 'width' => intval( $this->width ),
+ 'height' => intval( $this->height ),
+ ] );
+ return $thumb->toHtml( [
+ 'desc-link' => true,
+ ] );
+ }
+
+ /**
* Sort media by bandwidth, but with things not wide enough at end
*
* The list should be in preferred source order, so we want the file
diff --git a/resources/mmv.tmh.js b/resources/mmv.tmh.js
new file mode 100644
index 0000000..cb551c0
--- /dev/null
+++ b/resources/mmv.tmh.js
@@ -0,0 +1,37 @@
+( function ( mw, $ ) {
+
+ $( document ).on( 'mmv-metadata.tmh', function ( e ) {
+ var formats = [ 'ogg', 'oga', 'ogv', 'ogm', 'webm', 'mp4', 'm4a', 'm4v' ];
+ var extension = e.image.filePageTitle.ext;
+ if ( $.inArray( extension, formats ) !== -1 ) {
+ // do stuff
+ console.log('e.viewer', e.viewer);
+ console.log('e.image', e.image);
+ console.log('e.imageInfo', e.imageInfo);
+ /*
+ e.viewer
+ e.imageInfo.url
+ this.progressBar = viewer.ui.panel.progressBar;
+ this.$container = viewer.ui.canvas.$imageDiv;
+ var width = $( window ).width(),
+ height = this.viewer.ui.canvas.$imageWrapper.height();
+ */
+
+ var viewer = e.viewer,
+ image = e.image,
+ $container = viewer.ui.canvas.$imageDiv;
+
+ var iframe = document.createElement( 'iframe' ),
+ $iframe = $( iframe );
+ $iframe.attr( {
+ width: $container.width(),
+ height: $container.height(),
+ border: 0,
+ src: image.filePageLink + '?embedplayer=yes'
+ } );
+
+ $container.empty().append( $iframe );
+ }
+ } );
+
+}( mediaWiki, jQuery ) );
--
To view, visit https://gerrit.wikimedia.org/r/314313
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2343d913936d5b077a56fa9caff1f534dcaf7b75
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/TimedMediaHandler
Gerrit-Branch: master
Gerrit-Owner: Brion VIBBER <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits