Skip to content

Commit 5c52d33

Browse files
committed
Render two canvas slices from one video
1 parent 02dadde commit 5c52d33

File tree

4 files changed

+41
-17
lines changed

4 files changed

+41
-17
lines changed

build.gradle

+2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
apply plugin: 'war'
22
apply plugin: 'jetty'
3+
4+
jettyRun.contextPath = '/'

src/main/webapp/demo.html

+1-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@
88
<source src="video/video.webm" type='video/webm; codecs="vp8, vorbis"' />
99
</video>
1010
<br/>
11-
<canvas id="buffer"></canvas>
1211
<canvas id="primary"></canvas>
12+
<br/>
1313
<canvas id="secondary"></canvas>
14-
1514
<script src="js/jquery.js"></script>
1615
<script src="js/main.js"></script>
1716
</body>

src/main/webapp/js/main.js

+38-15
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,49 @@
11

22
(function() {
3-
var $video, $buffer, $primary, $secondary, video, buffer, primary, secondary, bufferCtx, primaryCtx, secondaryCtx;
3+
var $video, $buffer, $primary, $secondary, video, buffer, primary, secondary, bufferCtx, primaryCtx, secondaryCtx,
4+
initializeCanvases, config;
5+
6+
// var getResult = $.getJSON('/video/video.json');
7+
//
8+
//
9+
// console.log(getResult);
10+
// var configText = getResult.responseText;
11+
// console.log(configText);
12+
// config = jQuery.parseJSON(configText);
13+
14+
15+
config = { "primary": { "x": 0, "y": 0, "w": 1200, "h": 720 }, "secondary": { "x": 1200, "y": 480, "w": 320, "h": 240 } };
416
$video = $('video');
5-
$buffer = $('#buffer');
617
$primary = $('#primary');
718
$secondary = $('#secondary');
819
video = $video[0];
9-
buffer = $buffer[0];
1020
primary = $primary[0];
1121
secondary = $secondary[0];
1222

13-
$video.bind('canplay', function() {
14-
bufferCtx = buffer.getContext('2d');
15-
primaryCtx = primary.getContext('2d');
16-
secondaryCtx = secondary.getContext('2d');
17-
buffer.height = video.videoHeight;
18-
buffer.width = video.videoWidth;
19-
setInterval(function() {
20-
bufferCtx.drawImage(video, 0, 0);
21-
}, 30);
22-
});
23-
24-
video.play();
23+
initializeCanvases = function () {
24+
var renderFrame;
25+
primaryCtx = primary.getContext('2d');
26+
secondaryCtx = secondary.getContext('2d');
27+
28+
primary.height = config.primary.h;
29+
primary.width = config.primary.w;
30+
secondary.width = config.secondary.w;
31+
secondary.height = config.secondary.h;
32+
33+
renderFrame = function() {
34+
35+
// Render a slice into the primary canvas.
36+
primaryCtx.drawImage(video, config.primary.x, config.primary.y, config.primary.w, config.primary.h, 0, 0,
37+
config.primary.w, config.primary.h);
38+
39+
secondaryCtx.drawImage(video, config.secondary.x, config.secondary.y, config.secondary.w,
40+
config.secondary.h, 0, 0, config.secondary.w, config.secondary.h);
41+
};
42+
setInterval(renderFrame, 30);
43+
44+
};
45+
$video.bind('canplay', initializeCanvases);
46+
47+
video.play();
2548

2649
})();

src/main/webapp/video/video.json

Whitespace-only changes.

0 commit comments

Comments
 (0)