Met de widget (vPlus) kan de auteur een HTML-diapresentatie maken die met een video wordt gesynchroniseerd. De voordelen van vPlus ten opzichte van een traditionele video zijn:
- dia's kunnen DevSite-functies gebruiken, zoals:
- bevat die het gemakkelijk maken om inhoud opnieuw te gebruiken
- conditionals om inhoud weer te geven die is afgestemd op verschillende doelgroepen, waarbij dezelfde dia zou verwijzen naar interne technologie voor Googlers, en Google Cloud Platform-inhoud voor het grote publiek
De auteur kan bepalen of de video in een hoek van de dia wordt weergegeven en de hele dia bestrijkt, of wordt gestopt terwijl de gebruiker met een dia communiceert.
Demo
Het volgende is een voorbeeld waarin vPlus de functies ervan demonstreert. Druk op de afspeelknop om te beginnen.
Schema
Een Video Plus-widget wordt gemaakt door een element te markeren met de klasse devsite-vplus
. Bovendien moet dat element een data-video-id
attribuut bevatten dat de id specificeert van de YouTube-video die moet worden getoond.
Als het widgetelement ook een data-captions-url
attribuut bevat, moet het een json-bestand specificeren met de ondertitels die overeenkomen met de video. Dit bestand moet zich in dezelfde map bevinden als het md
of html
bestand, of als het begint met een '/', begint het pad naar het bestand in de root. Zie vPlus videospeler voor details over het formaat en het genereren van dit bestand. Het ondertitelingsbestand moet handmatig uit de video worden geëxtraheerd; zie //engedu/common/vplus/README.md
voor details en een tool om het ondertitelingsbestand te genereren.
Verder moet het devsite-vplus
element een element bevatten met de klasse devsite-vplus-content-container
. Dat element zou op zijn beurt een element moeten bevatten met de klasse devsite-vplus-slide-frame
.
Er wordt aangenomen dat elk element binnen het devsite-vplus-slide-frame
element een dia is. De dia's moeten in chronologische volgorde worden weergegeven. Elk dia-element moet een data-start-time
attribuut hebben dat de tijd in hele seconden specificeert waarop deze dia moet worden weergegeven. Bovendien kan elke dia een data-video-mode
attribuut hebben. Dat attribuut heeft twee geldige waarden:
- "groot": zorgt ervoor dat de video het grootste deel van de diaruimte in beslag neemt en de dia bedekt.
- "stopped": zorgt ervoor dat de video wordt gepauzeerd wanneer die dia wordt bereikt.
Als de data-video-modus niet is opgegeven, wordt de video standaard ingesteld op klein formaat.
Auteurs van dia's zullen waarschijnlijk extra CSS voor hun dia's willen specificeren. Omdat de dia's zijn opgenomen in een div
met de klasse devsite-vplus-slide-frame
, kunnen dia-specifieke CSS-stijlen een naamruimte krijgen voor onderliggende elementen van deze klasse.
Bijvoorbeeld:
<style>
.devsite-vplus-slide-frame h1 {
background-color: #4285F4;
border-bottom: 1px solid #7BAAF7;
color: #fff;
margin: 0;
padding: 10px;
top: 0 !important;
}
/* More styles... */
</style>
<div class="devsite-vplus" data-video-id="PXVnv_Paexc" data-captions-url="video-plus-captions.json">
<div class="devsite-vplus-content-container">
<div class="devsite-vplus-slide-frame">
<div data-start-time=0 class="title-background">
<div class="header1 title">vPlus Demo</div>
</div>
<div data-slide-note=true>
Note for the 'title' slide.
</div>
<div data-start-time=2 data-video-mode="large">
<!-- Intentionally left blank -->
</div>
<div data-slide-note=true>
This slide was intentionally left blank.
</div>
<div data-start-time=13>
<div class="header2">Nice Informative Slide</div>
<ul>
<li>Nice, informative bullet point</li>
<li>Another nice, informative bullet point</li>
</ul>
</div>
<div data-slide-note=true>
Very meta. In this note, we could talk about several things:
<ul>
<li>What could go in the note versus in the slide itself.
<ul>
<li>Either can contain HTML or markdown</li>
<li>Whether it would be useful to display something to the viewer
or only in the notes that the presenter would presummably
see and may read out loud.</li>
</ul>
</li>
<li>Users may view notes themselves, usually offline.</li>
<li>Notes could be a way of
<a href="#demo">linking to demos</a>.
</li>
</ul>
</div>
<div data-start-time=21>
<div class="header2">Nice, informative cat picture</div>
<div>
<!-- Image CCO Public Domain at https://pixabay.com/en/kitten-cute-feline-kitty-domestic-1246693/ -->
<img class="cat-pic" src="https://cdn.pixabay.com/photo/2016/03/09/15/31/kitten-1246693_1280.jpg">
</div>
</div>
<div data-start-time=32 data-video-mode="stopped">
<div class="header2">Here's some interactive content</div>
<div>
<devsite-multiple-choice>
<div>What color is the sky?</div>
<div correct>
<div>Blue</div>
<div>But do you know <b>why</b>?</div>
</div>
<div>
<div>Purple</div>
<div>Not really</div>
</div>
<div>
<div>Indigo</div>
<div>Close but not quite</div>
</div>
<div>
<div>Green</div>
<div>What planet are you from?</div>
</div>
</devsite-multiple-choice>
</div>
</div>
<div data-slide-note="true">
Note, when an interactive slide is reached,
you have to click the 'Play' button,
or the 'Next Slide' button in order to continue.
</div>
<div data-start-time=33 data-video-mode="stopped">
<div class="header2">Here's some more interactive content - <a href="/blockly/">Blockly</a></div>
<iframe style="height: 75%; width: 90%; margin: 0 5%;" src="/blockly/blockly-demo/blockly-demo"></iframe>
</div>
<div data-start-time=34 data-video-mode="large">
<!-- Intentionally left blank -->
</div>
<div data-start-time=78>
<div>
<div class="header2">Thanks for watching!</div>
<ul>
<li>Video Plus drives video play and slides</li>
<li>Reduces need to reshoot video if slides change</li>
<li>Provides searchable transcript</li>
<li>Pauses video for user interactions</li>
<li>Video can switch between large and small</li>
</ul>
</div>
</div>
</div>
</div>
</div>
Wanneer de vPlus-widget op een pagina wordt weergegeven, wordt de videospeler niet automatisch gestart, maar nadat de gebruiker op de afspeelknop heeft gedrukt, worden de dia's en de bijschriften, indien weergegeven, automatisch voortgezet. Gebruikers kunnen ook de volgende muis- en toetsenbordacties gebruiken om met de widget te communiceren.