Changes for page Video Macro
Last modified by Ludovic Dubost on 2023/04/25 09:12
From version 5.1
edited by Ludovic Dubost
on 2018/12/09 12:30
on 2018/12/09 12:30
Change comment:
Install extension [org.xwiki.contrib:macro-video/1.13]
To version 4.1
edited by Ludovic Dubost
on 2018/11/30 15:24
on 2018/11/30 15:24
Change comment:
Migrated property [async_enabled] from class [XWiki.WikiMacroClass]
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (3 modified, 0 added, 1 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,47 +1,42 @@ 1 - ==Example usage==1 +Example usage: 2 2 3 +{{code}} 3 3 Youtube: 4 4 5 -{{code}} 6 6 {{video url="http://www.youtube.com/watch?v=Titn-yAh74A"/}} 7 -{{/code}} 8 8 9 -{{video url="http://www.youtube.com/watch?v=Titn-yAh74A"/}} 10 - 11 -{{code}} 12 -{{video url="http://www.youtube.com/watch?v=Titn-yAh74A" ratio="16:9"/}} 13 -{{/code}} 14 - 15 -{{video url="http://www.youtube.com/watch?v=Titn-yAh74A" ratio="16:9"/}} 16 - 17 17 Dailymotion: 18 18 19 -{{code}} 20 20 {{video url="http://www.dailymotion.com/video/x9x04h_wiki-et-reseau-social-xwiki-et-blue_tech"/}} 21 -{{/code}} 22 22 23 -{{video url="http://www.dailymotion.com/video/x9x04h_wiki-et-reseau-social-xwiki-et-blue_tech"/}} 24 - 25 25 Vimeo: 26 26 27 -{{code}} 28 28 {{video url="http://vimeo.com/30980990"/}} 29 -{{/code}} 30 30 31 -{{video url="http://vimeo.com/30980990"/}} 32 - 33 33 Attachment: 34 34 35 -{{code}} 36 36 {{video attachment="test-vid.webm"/}} 37 -{{/code}} 38 38 39 -{{video attachment="test-vid.webm"/}} 40 - 41 41 DASH: 42 42 43 -{{code}} 44 44 {{video dash="Space.Page"/}} 45 45 {{/code}} 46 46 47 -{{video dash="Space.Page"/}} 25 +Gives: 26 + 27 +Youtube: 28 + 29 +{{video url="http://www.youtube.com/watch?v=Titn-yAh74A"/}} 30 + 31 +Dailymotion: 32 + 33 +{{video url="http://www.dailymotion.com/video/x9x04h_wiki-et-reseau-social-xwiki-et-blue_tech"/}} 34 + 35 +Vimeo: 36 + 37 +{{video url="http://vimeo.com/30980990"/}} 38 + 39 +Attachment: 40 + 41 +{{video attachment="test-vid.webm"/}} 42 +
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -1,48 +1,50 @@ 1 1 // Configure require.js to use video.js and dash.js (https://github.com/videojs/video.js/blob/stable/docs/guides/setup.md) 2 2 // (https://github.com/Dash-Industry-Forum/dash.js) 3 3 require.config({ 4 - 'paths': {5 - 'video-js': "$services.webjars.url('video-js/4.11.4/video.js')",6 - 'dash-webm': "$services.webjars.url('dash.js/1.4/contrib/webmjs/dash.webm.min.js')",7 - 'videojs-dashjs': "$services.webjars.url('dash.js/1.4/contrib/videojs/videojs-tech-dashjs.js')"8 - } 4 + "paths": { 5 + "video-js": "$services.webjars.url('video-js/4.11.4/video.js')", 6 + "dash-webm": "$services.webjars.url('dash.js/1.4/contrib/webmjs/dash.webm.min.js')", 7 + "videojs-dashjs": "$services.webjars.url('dash.js/1.4/contrib/videojs/videojs-tech-dashjs.js')" 8 + } 9 9 }); 10 10 11 -// Load the video-js css file .11 +// Load the video-js css file 12 12 function loadCss(url) { 13 - var link = document.createElement( 'link');14 - link.type = 'text/css';15 - link.rel = 'stylesheet';16 - link.href = url; 17 - document.getElementsByTagName( 'head')[0].appendChild(link);13 + var link = document.createElement("link"); 14 + link.type = "text/css"; 15 + link.rel = "stylesheet"; 16 + link.href = url; 17 + document.getElementsByTagName("head")[0].appendChild(link); 18 18 } 19 19 20 -// Set up DASH player .20 +// Set up DASH player 21 21 function setupPlayer(videoDashID) { 22 - // If the dash is not supported on the browser, play an flv video. 23 - if (videojs.Dashjs.isSupported()) { 24 - // Initalize the video.js player. 25 - var myPlayer = videojs(videoDashID, {context: new Webm.di.WebmContext()}); 26 - } else { 27 - var flvVideoURL = document.getElementById(videoDashID).getElementsByClassName('flv-video-url')[0].value; 28 - var sourceElement = document.getElementById(videoDashID).getElementsByTagName('source')[0]; 29 - sourceElement.setAttribute('src', flvVideoURL); 30 - sourceElement.setAttribute('type', 'video/x-flv'); 31 - videojs(videoDashID); 32 - } 22 + // If the dash is not supported on the browser, play an flv video 23 + if (videojs.Dashjs.isSupported()) { 24 + // Initalize the video.js player 25 + var myPlayer = videojs(videoDashID, {context:new Webm.di.WebmContext()}); 26 + } 27 + else 28 + { 29 + var flvVideoURL = document.getElementById(videoDashID).getElementsByClassName("flv-video-url")[0].value; 30 + var sourceElement = document.getElementById(videoDashID).getElementsByTagName("source")[0]; 31 + sourceElement.setAttribute("src", flvVideoURL); 32 + sourceElement.setAttribute("type", "video/x-flv"); 33 + videojs(videoDashID); 34 + } 33 33 } 34 34 35 -require(['jquery', 'dash-webm', 'video-js'], function($, dashwebm, videojs) { 36 - loadCss("$services.webjars.url('video-js/4.11.4/video-js.min.css')"); 37 - videojs.options.flash.swf = "$services.webjars.url('video-js/4.11.4/video-js.swf')"; 38 - require(['videojs-dashjs'], function(videojsdash) { 39 - $(function() { 40 - // Initialize DASH videos. 41 - $('video.dashvideo').each(function(index) { 42 - var videoDashID = 'dash-video' + index; 43 - $(this).attr('id', videoDashID); 44 - setupPlayer(videoDashID); 37 +require(['jquery', 'dash-webm', 'video-js'], function($, dashwebm, videojs){ 38 + loadCss("$services.webjars.url('video-js/4.11.4/video-js.min.css')"); 39 + videojs.options.flash.swf = "$services.webjars.url('video-js/4.11.4/video-js.swf')"; 40 + require(["videojs-dashjs"], function(videojsdash){ 41 + $(function(){ 42 + // Initialize DASH videos 43 + $("video.dashvideo").each(function(index){ 44 + var videoDashID = "dash-video" + index; 45 + $(this).attr("id", videoDashID); 46 + setupPlayer(videoDashID); 47 + }); 45 45 }); 46 - }); 47 - }); 49 + }); 48 48 });
- XWiki.WikiMacroClass[0]
-
- Macro code
-
... ... @@ -1,4 +1,5 @@ 1 -{{velocity output="false"}} 1 +{{velocity output=false}} 2 + 2 2 Compute the URL of the embedded video from the original web URL. 3 3 4 4 #set ($url = '') ... ... @@ -33,114 +33,110 @@ 33 33 ## http://vimeo.com/moogaloop.swf?clip_id=<videoId>&show_title=1 34 34 #set ($url = $xcontext.macro.params.url.replaceAll('^.*?//.*?/(.*?)([#?].*|$)', '//player.vimeo.com/video/$1')) 35 35 #end 37 + 38 +Compute the width and height. 39 + 36 36 #set ($width = $xcontext.macro.params.width) 37 37 #set ($height = $xcontext.macro.params.height) 38 -#set ($embedContainerClass = '') 39 -#set ($embedItemClass = '') 40 -#set ($ratio = '') 41 -## The ratio value is used to compute a bootstrap css class: embed-responsive-16by9. 42 -#if ($xcontext.macro.params.ratio) 43 - #set ($ratio = $xcontext.macro.params.ratio.replace(':', 'by')) 44 - #set ($embedContainerClass = "class='embed-responsive embed-responsive-$ratio'") 45 - #set ($embedItemClass = 'embed-responsive-item') 46 - #set ($width = '100%') 47 - #set ($height = '100%') 48 -#end 49 -#set ($width = "width=$width") 50 -#set ($height = "height=$height") 42 + 51 51 {{/velocity}} 52 52 {{velocity}} 53 53 #if ("$!url" != '') 54 - {{html clean="false"}} 55 - <div $!embedContainerClass> 56 - #if ($xcontext.macro.params.url.indexOf('google') != -1) 57 - <object class="$!embedItemClass" $!width $!height type="application/x-shockwave-flash" data="$!url"> 58 - <param name="movie" value="$!url"></param> 59 - <param name="allowFullScreen" value="true"></param> 60 - </object> 61 - #else 62 - <iframe class="$!embedItemClass" src="$!url" $!width $!height frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> 63 - #end 64 - </div> 65 - {{/html}} 46 + 47 +{{html wiki="false"}} 48 +#if ($xcontext.macro.params.url.indexOf('google') != -1) 49 + <object width="$!{width}" height="$!{height}" type="application/x-shockwave-flash" data="${url}"><param name="movie" value="${url}"></param><param name="allowFullScreen" value="true"></param></object> 66 66 #else 67 - #set ($discard = $xwiki.jsx.use('Macros.Video20')) 68 - #set ($discard = $xwiki.ssx.use('Macros.Video20')) 69 - #if ("$!xcontext.macro.params.attachment" != '') 70 - ## read a video attachement 71 - #set ($videoAttachmentName = $xcontext.macro.params.attachment) 72 - #set ($videoAttachmentDoc = $doc) 73 - #set ($videoAttachmentRef = $xcontext.macro.params.reference) 74 - #if ("$!videoAttachmentRef" != '' && $services.security.authorization.hasAccess('view', $videoAttachmentRef)) 75 - #set ($videoAttachmentDoc = $xwiki.getDocument($services.model.resolveDocument($videoAttachmentRef))) 76 - #end 77 - #if ($videoAttachmentDoc.getAttachment($videoAttachmentName)) 78 - #set ($videoURL = $videoAttachmentDoc.getAttachmentURL($videoAttachmentName)) 79 - #set ($videoPoster = '') 80 - #if ($videoAttachmentDoc.getAttachment($xcontext.macro.params.videoPoster)) 81 - #set ($videoPoster = $videoAttachmentDoc.getAttachmentURL($xcontext.macro.params.videoPoster)) 82 - #end 83 - #set ($supportedVideoFormats = ['mp4', 'webm', 'ogv', 'mov', 'avi', 'mkv', 'flv']) 84 - #set ($formatIndex = $videoAttachmentName.lastIndexOf('.')) 85 - #if ($formatIndex != -1) 86 - #set ($videoFormat = $videoAttachmentName.substring($mathtool.add($formatIndex, 1), $videoAttachmentName.length())) 87 - #if ($supportedVideoFormats.contains($videoFormat)) 88 - #set ($videoMimeType = $videoFormat) 89 - #if ($videoFormat == 'ogv') 90 - #set ($videoMimeType = 'ogg') 91 - #elseif ($videoFormat == 'mov') 92 - #set ($videoMimeType = 'quicktime') 93 - #elseif ($videoFormat == 'avi') 94 - #set ($videoMimeType = 'x-msvideo') 95 - #elseif ($videoFormat == 'mkv') 96 - #set ($videoMimeType = 'x-matroska') 97 - #elseif ($videoFormat == 'flv') 98 - #set ($videoMimeType = 'x-flv') 99 - #end 100 - #end 101 - #end 102 - #if ("$!videoFormat" != '') 103 - {{html clean="false"}} 104 - <div $!embedContainerClass> 105 - <video class="video-js vjs-default-skin vjs-big-play-centered $!embedItemClass" controls preload="auto" 106 - $!width $!height poster="$!videoPoster" data-setup=''> 107 - <source src="$!videoURL" type="video/$!videoMimeType" /> 108 - </video> 109 - </div> 110 - {{/html}} 51 + <iframe src="${url}" width="$!{width}" height="$!{height}" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> 52 +#end 53 +{{/html}} 54 + 55 +#else 56 + #if ("$!xcontext.macro.params.attachment" != '') 57 + ## read a video attachement 58 + #set($videoAttachmentName = $xcontext.macro.params.attachment) 59 + #set($videoAttachmentDoc = $doc) 60 + #set($videoAttachmentRef = $xcontext.macro.params.reference) 61 + #if("$!videoAttachmentRef" != '' && $services.security.authorization.hasAccess('view', $videoAttachmentRef)) 62 + #set($videoAttachmentDoc = $xwiki.getDocument($services.model.resolveDocument($xcontext.macro.params.reference))) 63 + #end 64 + #if ($videoAttachmentDoc.getAttachment($videoAttachmentName)) 65 + #set($discard = $xwiki.jsx.use("Macros.Video20")) 66 + #set($discard = $xwiki.ssx.use("Macros.Video20")) 67 + #set($videoURL = $videoAttachmentDoc.getAttachmentURL($videoAttachmentName)) 68 + #set($videoPoster = "") 69 + #if("$!xcontext.macro.params.videoPoster" != '' && $videoAttachmentDoc.getAttachment($xcontext.macro.params.videoPoster)) 70 + #set($videoPoster = $videoAttachmentDoc.getAttachmentURL($xcontext.macro.params.videoPoster)) 71 + #end 72 + #set($supportedVideoFormats = ["mp4", "webm", "ogv", "mov", "avi", "mkv", "flv"]) 73 + #set($videoFormat = "") 74 + #set($videoMimeType = "") 75 + #set($formatIndex = $videoAttachmentName.lastIndexOf(".")) 76 + #if ($formatIndex != -1) 77 + #set($videoFormat = $videoAttachmentName.substring($mathtool.add($formatIndex, 1), $videoAttachmentName.length())) 78 + #if (!$supportedVideoFormats.contains($videoFormat)) 79 + #set($videoFormat = "") 80 + #else 81 + #set($videoMimeType = $videoFormat) 82 + #if ($videoFormat == "ogv") 83 + #set($videoFormat = "ogg") 84 + #set($videoMimeType = "ogg") 85 + #elseif ($videoFormat == "mov") 86 + #set($videoMimeType = "quicktime") 87 + #elseif ($videoFormat == "avi") 88 + #set($videoMimeType = "x-msvideo") 89 + #elseif ($videoFormat == "mkv") 90 + #set($videoMimeType = "x-matroska") 91 + #elseif ($videoFormat == "flv") 92 + #set($videoMimeType = "x-flv") 93 + #end 94 + #end 95 + #end 96 + #if ($videoFormat != "") 97 + {{html clean='false'}} 98 + <video class="video-js vjs-default-skin vjs-big-play-centered" 99 + controls preload="auto" 100 + width="${width}" 101 + height="${height}" 102 + poster="$!videoPoster" 103 + data-setup=''> 104 + <source src="$videoURL" type="video/${videoMimeType}" /> 105 + </video> 106 + {{/html}} 107 + #else 108 + {{warning}}Video format not supported.{{/warning}} 109 + #end 110 + #else 111 + {{warning}}Video attachment not found!{{/warning}} 112 + #end 113 + #elseif("$!xcontext.macro.params.dash" != '') 114 + #set($dashDocRef = $xcontext.macro.params.dash) 115 + #if($xwiki.exists($dashDocRef)) 116 + #set($dashDoc = $xwiki.getDocument($dashDocRef)) 117 + #set($manifestFile = $dashDoc.getAttachment("manifest.mpd")) 118 + #if($manifestFile) 119 + #set($manifestFileURL = $dashDoc.getAttachmentURL("manifest.mpd")) 120 + ## If the browser do not support DASH (Media Source Extensions) then display an flv low quality video 121 + #set($flvVideoURL = "") 122 + #if($dashDoc.getAttachment("video.flv")) 123 + #set($flvVideoURL = $dashDoc.getAttachmentURL("video.flv")) 124 + #end 125 + {{html clean='false'}} 126 + #set($discard = $xwiki.jsx.use("Macros.Video20")) 127 + #set($discard = $xwiki.ssx.use("Macros.Video20")) 128 + <video class="dashvideo video-js vjs-default-skin" controls preload="auto" width="$!{width}" height="$!{height}" > 129 + <source src="$manifestFileURL" type="application/dash+xml"> 130 + <input type="hidden" class="flv-video-url" value="$flvVideoURL"/> 131 + </video> 132 + {{/html}} 133 + #else 134 + {{warning}}manifest.mpd attachment not found!{{/warning}} 135 + #end 111 111 #else 112 - {{warning}} Videoformat notsupported.{{/warning}}137 + {{warning}}The DASH document not found!{{/warning}} 113 113 #end 114 - #else 115 - {{warning}}Video attachment not found.{{/warning}} 116 - #end 117 - #elseif("$!xcontext.macro.params.dash" != '') 118 - #set ($dashDocRef = $services.model.resolveDocument($xcontext.macro.params.dash)) 119 - #if ($xwiki.exists($dashDocRef)) 120 - #set ($dashDoc = $xwiki.getDocument($dashDocRef)) 121 - #if ($dashDoc.getAttachment('manifest.mpd')) 122 - #set ($manifestFileURL = $dashDoc.getAttachmentURL('manifest.mpd')) 123 - ## If the browser do not support DASH (Media Source Extensions) then display an flv low quality video 124 - #set ($flvVideoURL = '') 125 - #if ($dashDoc.getAttachment('video.flv')) 126 - #set ($flvVideoURL = $dashDoc.getAttachmentURL('video.flv')) 127 - #end 128 - {{html clean="false"}} 129 - <div $!embedContainerClass> 130 - <video class="dashvideo video-js vjs-default-skin $!embedItemClass" controls preload="auto" $!width $!height> 131 - <source src="$!manifestFileURL" type="application/dash+xml"> 132 - <input type="hidden" class="flv-video-url" value="$!flvVideoURL"/> 133 - </video> 134 - </div> 135 - {{/html}} 136 - #else 137 - {{warning}}manifest.mpd attachment not found.{{/warning}} 138 - #end 139 - #else 140 - {{warning}}The DASH document not found.{{/warning}} 141 - #end 142 - #else 143 - {{warning}}The Video URL you entered ($!{xcontext.macro.params.url}) does not match any of the video websites supported by this macro. Please check the address you entered or improve the macro to make it support this website.{{/warning}} 144 - #end 139 + #else 140 + {{warning}}The Video URL you entered ($!{xcontext.macro.params.url}) does not match any of the video websites supported by this macro. Please check the address you entered or improve the macro to make it support this website.{{/warning}} 141 + #end 145 145 #end 146 146 {{/velocity}}
- XWiki.WikiMacroParameterClass[5]
-
- Parameter description
-
... ... @@ -1,1 +1,2 @@ 1 1 The poster of the video is an image attachment that will be displayed before starting playing the video. 2 +
- XWiki.WikiMacroParameterClass[8]
-
- Parameter description
-
... ... @@ -1,1 +1,0 @@ 1 -The aspect ratio of a video describes the proportional relationship between its width and its height. Possible values: '1:1', '4:3', '16:9', '21:9'. - Parameter mandatory
-
... ... @@ -1,1 +1,0 @@ 1 -No - Parameter name
-
... ... @@ -1,1 +1,0 @@ 1 -ratio