V tomto článku vám ukážem,ako pomocou HTML5 vytvoriť video s prehrávačom
V komentároch v zdrojovom kóde nájdete jednoduchý postup.
Vytvoríme si súbor .html s názvom napr. videopcexpert.html
<!DOCTYPE html>
<html>
<meta charset="utf-8" />
<link rel="stylesheet" href="styly.css">
<title>Časová osa</title>
<video id="movies" autoplay oncanplay="startVideo()" onended="stopTimeline()" autobuffer="true"
width="400px" height="300px">
<source src="/html5/klip.ogv" type='video/ogg; codecs="theora, vorbis"'>
<source src="/html5/klip.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
</video>
<canvas id="timeline" width="400px" height="300px">
<script type="text/javascript">
// doba v milisekundách medzi aktualizáciami snímok
var updateInterval = 5000;
// veľkosť snímkov
var frameWidth = 100;
var frameHeight = 75;
// počet snímkov
var frameRows = 4;
var frameColumns = 4;
var frameGrid = frameRows * frameColumns;
// aktuální snímok
var frameCount = 0;
// k zrušeniu časovača po skončení prehrávania
var intervalId;
var videoStarted = false;
function startVideo() {
// časovač sa nastaví iba pri prvom spustení videa
if (videoStarted)
return;
videoStarted = true;
// zobrazení úvodního snímku a nastavení časovače pro pravidelné
// zobrazování dalších snímků
updateFrame();
intervalId = setInterval(updateFrame, updateInterval);
// nastavenie obsluhy kliknutí na snímku
var timeline = document.getElementById("timeline");
timeline.onclick = function(evt) {
var offX = evt.layerX - timeline.offsetLeft;
var offY = evt.layerY - timeline.offsetTop;
// určenie poradia snímky, na ktorý používateľ klikli (počíta sa od nuly)
var clickedFrame = Math.floor(offY / frameHeight) * frameRows;
clickedFrame += Math.floor(offX / frameWidth);
// určenie snímku hľadaného vo videu
var seekedFrame = (((Math.floor(frameCount / frameGrid)) *
frameGrid) + clickedFrame);
// ak užívateľ klikol na snímku, ktorý sa v časovej osi nachádza
// za aktuálnym snímkom, jedná sa o snímka z predchádzajúceho cyklu snímok
if (clickedFrame > (frameCount % 16))
seekedFrame -= frameGrid;
// nie je možné posunúť sa pred začiatok videá
if (seekedFrame < 0)
return;
// presunutie na daný snímok videa (v sekundách)
var video = document.getElementById("movies");
video.currentTime = seekedFrame * updateInterval / 1000;
// nastavenie aktuálneho počtu snímok na cieľový snímku
frameCount = seekedFrame;
}
}
// zobrazí snímka na plátne
function updateFrame() {
var video = document.getElementById("movies");
var timeline = document.getElementById("timeline");
var ctx = timeline.getContext("2d");
// výpočet aktuální pozice na základě počtu snímků
// následně se do plátna přidá obrázek - jako jeho zdroj slouží video
var framePosition = frameCount % frameGrid;
var frameX = (framePosition % frameColumns) * frameWidth;
var frameY = (Math.floor(framePosition / frameRows)) * frameHeight;
ctx.drawImage(video, 0, 0, 400, 300, frameX, frameY, frameWidth, frameHeight);
frameCount++;
}
// ukončeie zobrazovánía snímku
function stopTimeline() {
clearInterval(intervalId);
}
</script>
</html>Výsledok:
http://www.pocitacovyexpert.6f.sk/html5/videopcexpert.html
