MediaRecorder-creation.https.html (2527B)
1 <!doctype html> 2 <html> 3 <head> 4 <title>MediaRecorder Creation</title> 5 <link rel="help" href="https://w3c.github.io/mediacapture-record/MediaRecorder.html#mediarecorder"> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src=/resources/testdriver.js></script> 9 <script src=/resources/testdriver-vendor.js></script> 10 <script src='../mediacapture-streams/permission-helper.js'></script> 11 </head> 12 <script> 13 // This test verifies that MediaRecorder can be created with different Media 14 // Stream Track combinations: 1 Video Track only, 1 Audio Track only and finally 15 // a Media Stream with both a Video and an Audio Track. Note that recording is 16 // _not_ started in this test, see MediaRecorder-audio-video.html for it. 17 18 function makeAsyncTest(constraints, verifyStream, message) { 19 async_test(function(test) { 20 21 const gotStream = test.step_func(function(stream) { 22 verifyStream(stream); 23 24 var recorder = new MediaRecorder(stream); 25 assert_equals(recorder.state, "inactive"); 26 assert_not_equals(recorder.videoBitsPerSecond, 0); 27 assert_not_equals(recorder.audioBitsPerSecond, 0); 28 test.done(); 29 }); 30 31 const onError = test.unreached_func('Error creating MediaStream.'); 32 setMediaPermission().then(() => navigator.mediaDevices.getUserMedia(constraints)).then(gotStream, onError); 33 }, message); 34 } 35 36 function verifyVideoOnlyStream(stream) { 37 assert_equals(stream.getAudioTracks().length, 0); 38 assert_equals(stream.getVideoTracks().length, 1); 39 assert_equals(stream.getVideoTracks()[0].readyState, 'live'); 40 } 41 function verifyAudioOnlyStream(stream) { 42 assert_equals(stream.getAudioTracks().length, 1); 43 assert_equals(stream.getVideoTracks().length, 0); 44 assert_equals(stream.getAudioTracks()[0].readyState, 'live'); 45 } 46 function verifyAudioVideoStream(stream) { 47 assert_equals(stream.getAudioTracks().length, 1); 48 assert_equals(stream.getVideoTracks().length, 1); 49 assert_equals(stream.getVideoTracks()[0].readyState, 'live'); 50 assert_equals(stream.getAudioTracks()[0].readyState, 'live'); 51 } 52 53 // Note: webkitGetUserMedia() must be called with at least video or audio true. 54 makeAsyncTest({video:true}, verifyVideoOnlyStream, 'Video-only MediaRecorder'); 55 makeAsyncTest({audio:true}, verifyAudioOnlyStream, 'Audio-only MediaRecorder'); 56 makeAsyncTest({audio:true, video:true}, verifyAudioVideoStream, 'Video+Audio MediaRecorder'); 57 58 </script> 59 </html>