forked from kdzwinel/JS-face-tracking-demo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
executable file
·196 lines (157 loc) · 8.18 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>JavaScript Face Tracking Demo</title>
<meta name="Description" content="Face tracking demo in JavaScript"/>
<meta property="og:image" content="http://kdzwinel.github.io/JS-face-tracking-demo/img/step1.png"/>
<link rel="image_src" href="http://kdzwinel.github.io/JS-face-tracking-demo/img/step1.png"/>
<link rel="stylesheet" href="css/bootstrap.min.css"/>
<link rel="stylesheet" href="css/main.css"/>
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
</head>
<body class="step1">
<div class="container">
<div class="alert alert-danger"><strong>Oops!</strong> <span></span></div>
<div class="jumbotron">
<div id="step1">
<h1><i class="glyphicon glyphicon-facetime-video"></i></h1>
<p class="lead">
Make sure that your whole face is visible below.
<i class="glyphicon glyphicon-question-sign help" data-placement="bottom"
data-content="<img src='img/step1.png' />" data-html="true"></i>
</p>
<figure class="not-ready">
<video width="240" autoplay></video>
<canvas width="240" class="visible"></canvas>
<canvas width="240" class="hidden"></canvas>
</figure>
<button class="btn btn-lg btn-success" id="record" disabled>Record</button>
<button class="btn btn-lg btn-success" disabled id="convert">Convert to a GIF</button>
</div>
<div id="step2">
<h1><i class="glyphicon glyphicon glyphicon-cog"></i></h1>
<p class="lead">
Your recording is being converted to a GIF.
</p>
<figure class="loading">
<img>
</figure>
<div class="progress">
<div class="progress-bar" id="progressbar"></div>
</div>
<blockquote>
<p id="conversionResult"></p>
</blockquote>
<button class="btn btn-lg btn-default start-over">Start over</button>
<button class="btn btn-lg btn-success" id="upload" disabled>Upload to Imgur.com</button>
</div>
<div id="step3">
<h1><i class="glyphicon glyphicon-send"></i></h1>
<p class="lead">Your GIF is being uploaded to Imgur.com</p>
<figure>
<img>
</figure>
<blockquote>
<p></p>
</blockquote>
<button class="btn btn-lg btn-default start-over">Start over</button>
</div>
</div>
<div class="header">
<ul class="nav nav-pills pull-right">
<li class="active"><a href="#" data-step="1">#1 <i class="glyphicon glyphicon-facetime-video"></i></a></li>
<li class="disabled"><a href="#" data-step="2">#2 <i class="glyphicon glyphicon-cog"></i></a></li>
<li class="disabled"><a href="#" data-step="3">#3 <i class="glyphicon glyphicon-send"></i></a></li>
</ul>
<h3 class="text-muted">JavaScript Face Tracking Demo</h3>
</div>
<div class="row marketing">
<div class="col-lg-6">
<h4>Step #1 - getUserMedia and tracking.js</h4>
<p>getUserMedia is a HTML5 API that allows web apps to access user's camera and microphone. Read more on <a
href="http://www.html5rocks.com/en/tutorials/getusermedia/intro/">HTML5 Rocks</a>.</p>
<p><a href="https://github.com/eduardolundgren/tracking.js">tracking.js</a> was used to detect and track user's face, but that's just one of the things that this amazing library is capable of.</p>
<h4>Step #2 - gif.js</h4>
<p><a href="https://github.com/jnordberg/gif.js">gif.js</a> converted array of images to a GIF. It's very fast because it splits up the work between multiple web workers.</p>
<h4>Step #3 - Imgur.com API</h4>
<p><a href="https://api.imgur.com/">Imgur.com</a> offers free and extremely easy to use API that allows to upload and browse images.</p>
<h4>More…</h4>
<p>I've made a <a href="http://youtu.be/bC7uALxKDg8">short video about this project</a> that demonstrates how it works.</p>
<p>If you found this project interesting, you'll probably also like my <a href="http://youtu.be/ttn437BlEbo">JavaScript OCR Demo</a>.</p>
</div>
<div class="col-lg-6">
<h4>Support</h4>
<p>This demo requires <a href="http://caniuse.com/stream">getUserMedia</a>, <a
href="http://caniuse.com/typedarrays">typed arrays</a>, <a
href="http://caniuse.com/fileapi">file API</a> and <a href="http://caniuse.com/webworkers">web workers</a>. It should work (as for 08.2014) on Chrome, Firefox and Opera. Both desktop and mobile.</p>
<h4>Source code</h4>
<p>This demo is open source, and is hosted on <a href="https://github.com/kdzwinel/JS-face-tracking-demo">GitHub</a>.
Feel free to fork it, report issues and share your ideas for improvements.</p>
<h4>Social media</h4>
<!-- Github button -->
<iframe src="http://ghbtns.com/github-btn.html?user=kdzwinel&repo=JS-face-tracking-demo&type=watch&count=true"
allowtransparency="true" frameborder="0" scrolling="0" width="100" height="20"></iframe>
<!-- Twitter button -->
<a href="https://twitter.com/share" class="twitter-share-button"
data-url="http://kdzwinel.github.io/JS-face-tracking-demo/" data-via="kdzwinel">Tweet</a>
<!-- G+ button -->
<div class="g-plusone" data-size="medium" data-href="http://kdzwinel.github.io/JS-face-tracking-demo/"></div>
<!-- FB button -->
<div class="fb-like" data-href="http://kdzwinel.github.io/JS-face-tracking-demo/" data-layout="button_count"
data-action="like"
data-show-faces="false" data-share="true"></div>
<div id="fb-root"></div>
</div>
</div>
<div class="footer">
<p>
Konrad Dzwinel ·
<a href="https://github.com/kdzwinel"><i class="fa fa-github"></i></a> ·
<a href="http://stackoverflow.com/users/1143495/konrad-dzwinel"><i class="fa fa-stack-overflow"></i></a> ·
<a href="http://www.linkedin.com/pub/konrad-dzwinel/53/599/366/en"><i class="fa fa-linkedin"></i></a> ·
<a href="https://twitter.com/kdzwinel"><i class="fa fa-twitter"></i></a>
</p>
</div>
</div>
<!-- /container -->
<script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="js/vendor/modernizr.min.js"></script>
<script src="js/vendor/bootstrap.min.js"></script>
<script src="js/vendor/tracking-min.js"></script>
<script src="js/vendor/data/face-min.js"></script>
<script src="js/vendor/gif.js"></script>
<script src="js/vendor/gif.worker.js"></script>
<script src="js/main.js"></script>
<!-- Social -->
<script>!function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';
if (!d.getElementById(id)) {
js = d.createElement(s);
js.id = id;
js.src = p + '://platform.twitter.com/widgets.js';
fjs.parentNode.insertBefore(js, fjs);
}
}(document, 'script', 'twitter-wjs');</script>
<script type="text/javascript">
(function () {
var po = document.createElement('script');
po.type = 'text/javascript';
po.async = true;
po.src = 'https://apis.google.com/js/platform.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(po, s);
})();
</script>
<script>(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
</body>
</html>