OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <title>MediaStream Recoder Browser Test (w/ MediaSource)</title> | 4 <title>MediaStream Recoder Browser Test (w/ MediaSource)</title> |
5 </head> | 5 </head> |
6 <body> | 6 <body> |
7 <div> Record Real-Time video content browser test.</div> | 7 <div> Record Real-Time video content browser test.</div> |
8 <video id="video" autoplay></video> | 8 <video id="video" autoplay></video> |
9 <video id="remoteVideo" autoplay></video> | 9 <video id="remoteVideo" autoplay></video> |
10 </body> | 10 </body> |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 return failTest(err.toString()); | 161 return failTest(err.toString()); |
162 }) | 162 }) |
163 .then(function() { | 163 .then(function() { |
164 reportTestSuccess(); | 164 reportTestSuccess(); |
165 }); | 165 }); |
166 } | 166 } |
167 | 167 |
168 // Tests that when MediaRecorder's start(0) function is called, some data is | 168 // Tests that when MediaRecorder's start(0) function is called, some data is |
169 // made available by media recorder via dataavailable events, containing non | 169 // made available by media recorder via dataavailable events, containing non |
170 // empty blob data. | 170 // empty blob data. |
171 function testStartAndDataAvailable(codec) { | 171 function testStartAndDataAvailable(mimeType) { |
172 var videoSize = 0; | 172 var videoSize = 0; |
173 var emptyBlobs = 0; | 173 var emptyBlobs = 0; |
174 var timeStamps = []; | 174 var timeStamps = []; |
175 const mimeType = codec ? "video/webm;codecs=" + String(codec) : ""; | |
176 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 175 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
177 .then(function(stream) { | 176 .then(function(stream) { |
178 return createAndStartMediaRecorder(stream, mimeType); | 177 return createAndStartMediaRecorder(stream, mimeType); |
179 }) | 178 }) |
180 .then(function(recorder) { | 179 .then(function(recorder) { |
181 // Save history of Blobs received via dataavailable. | 180 // Save history of Blobs received via dataavailable. |
182 recorder.ondataavailable = function(event) { | 181 recorder.ondataavailable = function(event) { |
183 timeStamps.push(event.timeStamp); | 182 timeStamps.push(event.timeStamp); |
184 if (event.data.size > 0) | 183 if (event.data.size > 0) |
185 videoSize += event.data.size; | 184 videoSize += event.data.size; |
(...skipping 14 matching lines...) Expand all Loading... |
200 .catch(function(err) { | 199 .catch(function(err) { |
201 return failTest(err.toString()); | 200 return failTest(err.toString()); |
202 }) | 201 }) |
203 .then(function() { | 202 .then(function() { |
204 reportTestSuccess(); | 203 reportTestSuccess(); |
205 }); | 204 }); |
206 } | 205 } |
207 | 206 |
208 // Tests that when MediaRecorder's start(timeSlice) is called, some data | 207 // Tests that when MediaRecorder's start(timeSlice) is called, some data |
209 // available events are fired containing non empty blob data. | 208 // available events are fired containing non empty blob data. |
210 function testStartWithTimeSlice(codec) { | 209 function testStartWithTimeSlice(mimeType) { |
211 var videoSize = 0; | 210 var videoSize = 0; |
212 var emptyBlobs = 0; | 211 var emptyBlobs = 0; |
213 var timeStamps = []; | 212 var timeStamps = []; |
214 const mimeType = codec ? "video/webm;codecs=" + String(codec) : ""; | |
215 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 213 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
216 .then(function(stream) { | 214 .then(function(stream) { |
217 return createAndStartMediaRecorder(stream, mimeType,
DEFAULT_TIME_SLICE); | 215 return createAndStartMediaRecorder(stream, mimeType, |
| 216 DEFAULT_TIME_SLICE); |
218 }) | 217 }) |
219 .then(function(recorder) { | 218 .then(function(recorder) { |
220 recorder.ondataavailable = function(event) { | 219 recorder.ondataavailable = function(event) { |
221 timeStamps.push(event.timeStamp); | 220 timeStamps.push(event.timeStamp); |
222 if (event.data.size > 0) | 221 if (event.data.size > 0) |
223 videoSize += event.data.size; | 222 videoSize += event.data.size; |
224 else | 223 else |
225 emptyBlobs += 1; | 224 emptyBlobs += 1; |
226 }; | 225 }; |
227 }) | 226 }) |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 .then(function(stream) { | 279 .then(function(stream) { |
281 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); | 280 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
282 }) | 281 }) |
283 .then(function(recorder) { | 282 .then(function(recorder) { |
284 assertThrows(function() {recorder.resume()}, 'Calling resume() in' + | 283 assertThrows(function() {recorder.resume()}, 'Calling resume() in' + |
285 ' inactive state should cause a DOM error'); | 284 ' inactive state should cause a DOM error'); |
286 }); | 285 }); |
287 } | 286 } |
288 | 287 |
289 // Tests that MediaRecorder sends data blobs when resume() is called. | 288 // Tests that MediaRecorder sends data blobs when resume() is called. |
290 function testResumeAndDataAvailable(codec) { | 289 function testResumeAndDataAvailable(mimeType) { |
291 var videoSize = 0; | 290 var videoSize = 0; |
292 var emptyBlobs = 0; | 291 var emptyBlobs = 0; |
293 const mimeType = codec ? "video/webm;codecs=" + String(codec) : ""; | |
294 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 292 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
295 .then(function(stream) { | 293 .then(function(stream) { |
296 return createAndStartMediaRecorder(stream, mimeType); | 294 return createAndStartMediaRecorder(stream, mimeType); |
297 }) | 295 }) |
298 .then(function(recorder) { | 296 .then(function(recorder) { |
299 recorder.pause(); | 297 recorder.pause(); |
300 recorder.ondataavailable = function(event) { | 298 recorder.ondataavailable = function(event) { |
301 if (event.data.size > 0) { | 299 if (event.data.size > 0) { |
302 videoSize += event.data.size; | 300 videoSize += event.data.size; |
303 } else { | 301 } else { |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 .then(function(stream) { | 404 .then(function(stream) { |
407 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); | 405 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
408 }) | 406 }) |
409 .then(function(recorder) { | 407 .then(function(recorder) { |
410 assertThrows(function() {recorder.pause()}, 'Calling pause() in' + | 408 assertThrows(function() {recorder.pause()}, 'Calling pause() in' + |
411 ' inactive state should cause a DOM error'); | 409 ' inactive state should cause a DOM error'); |
412 }); | 410 }); |
413 } | 411 } |
414 | 412 |
415 // Tests that a remote peer connection stream can be successfully recorded. | 413 // Tests that a remote peer connection stream can be successfully recorded. |
416 function testRecordRemotePeerConnection(codec) { | 414 function testRecordRemotePeerConnection(mimeType) { |
417 var videoSize = 0; | 415 var videoSize = 0; |
418 var timeStamps = []; | 416 var timeStamps = []; |
419 const mimeType = codec ? "video/webm;codecs=" + String(codec) : ""; | |
420 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 417 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
421 .then(function(localStream) { | 418 .then(function(localStream) { |
422 return setupPeerConnection(localStream); | 419 return setupPeerConnection(localStream); |
423 }) | 420 }) |
424 .then(function(remoteStream) { | 421 .then(function(remoteStream) { |
425 return createMediaRecorder(remoteStream, mimeType); | 422 return createMediaRecorder(remoteStream, mimeType); |
426 }) | 423 }) |
427 .then(function(recorder) { | 424 .then(function(recorder) { |
428 recorder.ondataavailable = function(event) { | 425 recorder.ondataavailable = function(event) { |
429 timeStamps.push(event.timeStamp); | 426 timeStamps.push(event.timeStamp); |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 return failTest(err.toString()); | 589 return failTest(err.toString()); |
593 }) | 590 }) |
594 .then(function() { | 591 .then(function() { |
595 reportTestSuccess(); | 592 reportTestSuccess(); |
596 }); | 593 }); |
597 } | 594 } |
598 | 595 |
599 </script> | 596 </script> |
600 </body> | 597 </body> |
601 </html> | 598 </html> |
OLD | NEW |