MediaRecorder-blob-timecode.https.html (1491B)
1 <!doctype html> 2 <html> 3 <head> 4 <title>MediaRecorder Blob event timecode</title> 5 <link rel="help" href="https://w3c.github.io/mediacapture-record/MediaRecorder.html#dom-mediarecorder-start"> 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 <body> 13 14 <script> 15 promise_test(async t => { 16 await setMediaPermission(); 17 const stream = await navigator.mediaDevices.getUserMedia({video:true, audio:true}); 18 t.add_cleanup(() => stream.getTracks().forEach(tr => tr.stop())); 19 const recorder = new MediaRecorder(stream); 20 21 // Sets 0 timeslice will call the first chunk to be triggered immediately. 22 recorder.start(0); 23 let combinedSize = 0; 24 let previous_timecode = 0; 25 while (combinedSize < 2000) { 26 const {data, timecode} = await new Promise(r => recorder.ondataavailable = r); 27 if (combinedSize === 0) { 28 assert_equals(timecode, 0, "first chunk timecode must be 0"); 29 } else { 30 assert_greater_than(timecode, previous_timecode, "timecode must increase monotonically"); 31 } 32 previous_timecode = timecode; 33 combinedSize += data.size; 34 } 35 recorder.stop(); 36 }, "MediaRecorder Blob timecode for first chunk must be 0 and monotonically increasing"); 37 38 </script> 39 </body> 40 </html>