test_mediarecorder_record_audiocontext.html (1944B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test MediaRecorder Record AudioContext</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 7 <script type="text/javascript" src="manifest.js"></script> 8 </head> 9 <body> 10 11 <script class="testbody" type="text/javascript"> 12 13 function startTest() { 14 var context = new AudioContext(); 15 var buffer = context.createBuffer(1, 80920, context.sampleRate); 16 for (var i = 0; i < 80920; ++i) { 17 buffer.getChannelData(0)[i] = Math.sin(1000 * 2 * Math.PI * i / context.sampleRate); 18 } 19 20 var source = context.createBufferSource(); 21 source.buffer = buffer; 22 source.loop = true; 23 24 var dest = context.createMediaStreamDestination(); 25 source.connect(dest); 26 var elem = document.createElement('audio'); 27 elem.srcObject = dest.stream; 28 source.start(0); 29 elem.play(); 30 let mMediaRecorder = new MediaRecorder(dest.stream); 31 mMediaRecorder.onwarning = function() { 32 ok(false, 'onwarning unexpectedly fired'); 33 }; 34 35 mMediaRecorder.onerror = function() { 36 ok(false, 'onerror unexpectedly fired'); 37 }; 38 39 mMediaRecorder.onstop = function() { 40 ok(true, 'onstop fired successfully'); 41 is(mMediaRecorder.state, 'inactive', 'check recording status is inactive'); 42 SimpleTest.finish(); 43 }; 44 mMediaRecorder.ondataavailable = function (e) { 45 if (mMediaRecorder.state == 'recording') { 46 is(mMediaRecorder.mimeType, 'audio/ogg; codecs=opus', 'Expected MediaRecorder mimetype'); 47 is(e.data.type, 'audio/ogg; codecs=opus', 'Expected Blob mimetype'); 48 ok(e.data.size > 0, 'check blob has data'); 49 mMediaRecorder.stop(); 50 } 51 }; 52 try { 53 mMediaRecorder.start(1000); 54 is('recording', mMediaRecorder.state, "check record state recording"); 55 } catch (e) { 56 ok(false, 'Can t record audio context'); 57 } 58 } 59 60 startTest(); 61 SimpleTest.waitForExplicitFinish(); 62 </script> 63 </pre> 64 </body> 65 </html>