opus-media-recorder example

Minimal example using <script> tag.

by kbumsik

HTML

<!-- Project homepage: https://github.com/kbumsik/opus-media-recorder -->
<!-- This example for importing the module using <script> tag -->
<!-- For ES6 or node style import, see https://github.com/kbumsik/opus-media-recorder#javascript -->

<!-- load OpusMediaRecorder.umd.js. OpusMediaRecorder will be loaded. -->
<script src="https://cdn.jsdelivr.net/npm/opus-media-recorder@latest/OpusMediaRecorder.umd.js"></script>
<!-- load encoderWorker.umd.js. This should be after OpusMediaRecorder. -->
<!-- This script tag will create OpusMediaRecorder.encoderWorker. -->
<script src="https://cdn.jsdelivr.net/npm/opus-media-recorder@latest/encoderWorker.umd.js"></script>

<div>
  <p>Opus Recorder</p>
  <button id="startBtn">Start</button>
  <button id="stopBtn">Stop</button>
  <audio id="player" controls></audio>
</div>

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

div {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  font-size: 25px;
  text-align: center;
  transition: all 0.2s;
  margin: 0 auto;
  width: 300px;
}

button {
  background: #0084ff;
  border: none;
  border-radius: 5px;
  padding: 8px 14px;
  font-size: 15px;
  color: #fff;
}

#banner-message.alt {
  background: #0084ff;
  color: #fff;
  margin-top: 40px;
  width: 200px;
}

#banner-message.alt button {
  background: #fff;
  color: #000;
}

JavaScript

// Project homepage: https://github.com/kbumsik/opus-media-recorder
// This example is for jQuery users.
// ES6 example: https://github.com/kbumsik/opus-media-recorder#javascript

// If you already load encoderWorker.js using <script> tag,
// you don't need to define encoderWorkerFactory.
const workerOptions = {
	OggOpusEncoderWasmPath: 'https://cdn.jsdelivr.net/npm/opus-media-recorder@latest/OggOpusEncoder.wasm',
	WebMOpusEncoderWasmPath: 'https://cdn.jsdelivr.net/npm/opus-media-recorder@latest/WebMOpusEncoder.wasm'
};

$(document).ready(function() {
	window.MediaRecorder = OpusMediaRecorder;
  
	$("#startBtn").on("click", function(){
  	navigator.mediaDevices.getUserMedia({ audio: true }).then(stream => {
    	let options = { mimeType: 'audio/ogg' };
    	// Start recording
    	recorder = new MediaRecorder(stream, options, workerOptions);
    	recorder.start();
    	// Set record to <audio> when recording will be finished
    	recorder.addEventListener('dataavailable', (e) => {
      	$("#player").attr("src", URL.createObjectURL(e.data));
    	});
  	});
	});

	$("#stopBtn").on("click", function(){
  	recorder.stop();
  })
});