@decooda_inc/decooda-media-recorder

Media recorder and player with visualizer bars

Usage no npm install needed!

<script type="module">
  import decoodaIncDecoodaMediaRecorder from 'https://cdn.skypack.dev/@decooda_inc/decooda-media-recorder';
</script>

README

decooda-media-recorder

Description

The decooda-media-recorder or media visualizer is a js library for recording video (h.264) and audio (opus) in frontend applications. The base component has four main stages: initial, recording, playback, and submission. It also serves as a media player to either play only audio with visualizer bars or only video.

Demo

https://decooda-media-recorder.netlify.app/

NPM site with latest version

https://www.npmjs.com/package/@decooda_inc/decooda-media-recorder

Installation and run commands for local testing

Node version v14.8.0 and npm version 6.14.11 are used for development.

First run

npm install

to in install all packages. Finally run

npm start

to open a webpage of the decooda-media-recorder dashboard

To publish a new version of the package

  1. Create an account on npm: https://www.npmjs.com/
  2. login to npm via terminal; enter command: npm login and follow the prompts
  3. cd into the root directory of the package where package.json file is
  4. npm run build
  5. npm version patch (or "major" or "minor" depending on how big the changes are) Please refer to: https://docs.npmjs.com/cli/v6/commands/npm-version
  6. npm publish

Installation in app (React)

In root directory of app run:

npm install decooda-media-recorder

Usage (React)

Import the library

import MediaRecorder from 'decooda-media-recorder'

The media recorder (visualizer) accepts the following props:

Name Type Default Description
audioID string null Required if audioVisualizer is set to true; Also, for multiple renders of the audio visualizer, please provide a unique audioID
audioLinkData object {} audio link data to display; please follow the example below
audioOnly bool false if true, audio recording only; also, only audio option in media upload
audioVisualizer bool false if true, no recording; only play audio with visualizer bars; MUST include audioLinkData
barsID string null Required if audioVisualizer is set to true; Also, for multiple renders of the audio visualizer, please provide a unique barsID
fileOnly bool false if true, file upload only option in media upload
getRecordedBlob func function passed by host to library to retrieve the recorded blob
height string "auto" set height of media recorder
insertTitle bool false if true, will prompt user for title of media
recordingControls bool true if true, it will display controls during video recording
showLinkBtn bool true if true, will show insert link button
showUploadBtn bool true if true, will show upload media button
videoOnly bool false if true, video recording only; also only video option in media upload
width string "100%" set width of media recorder

To ONLY play audio with visualizer bars:

Set the audioVisualizer to true

<MediaRecorder
  ...
 audioVisualizer={true} 
  ...
/>

Supply the audio data; please follow this example:

const audioLinkData = 
{ 
  "name": "test", 
  "type": "ogg", 
  "date": "April 30, 2021 9:00AM", 
  "link": "https://actions.google.com/sounds/v1/ambiences/dmv_background_noise.ogg"
}

Supply a unique barsID and audioID

<MediaRecorder
  ...
  audioID="audio123"
  barsID="audio-bars"
  ...
/>

To do something with the recorded blob, pass a function:

//sends the recorded blob obj to the host to save, upload, etc:
const getRecordedBlob = (blob) => {
  console.log(blob)
  /*
  output:
  {
    //title if user prompted
    title: "test"
    time: date,
    //the raw recorded blob
    blobRaw: recordedBlob,
    //the blob url
    blobURL: url
    //the blob as a data url
    blobFile: file
  }
  */
  //do something with blob
}