Skip to content

Kaltura Express Capture enables recording content directly from the browser without the need to install any additional software. aka kSelfie

License

Notifications You must be signed in to change notification settings

kaltura/express-recorder

Repository files navigation

Kaltura Express Recorder

Kaltura Express Recorder (aka Express Capture or kSelfie) enables recording videos directly from the browser without the need to install additional software. Web recorder is based on WebRTC and its predecessor project - webrtc-krecord.

Express Recorder Screenshot

Officially supported browsers: Chrome, Firefox, Opera.

Dev install

  1. git clone
  2. npm install

(assuming this failed running because node-sass issues, try npm ci instead)

IMPORTANT NOTE!

If npm install fails make sure you are using node 14 (node-sass is dependant on it). You can download nvm and use it to set the node engine to be the proper one 'nvm use 14'

Run the project

clone index.template.ejs into index.ejs (Same dir) and fill in the needed properties.

execute - "npm run serve"

Run with storybook

  1. fill props in expressRecorder.stories.jsx
  2. yarn run storybook

Create build release

  1. update the package.json file with the new version
  2. npm run build
  3. copy files located under 'dist' folder to your project, or use the zip file with the version name.
  4. attach the zip created (on the root of the project) to the release notes.

Embedding into html page

const component = Kaltura.ExpressRecorder.create('parent_div_id', { list of props for expressRecorder components in form of 'prop': 'value' });

deployment to Kaltura server

  1. unzip v<version number>.zip (attached to version release notes) to Kaltura-server/apps/expressrecorder/v<version number>

API

ExpressRecorder props:

name description type required default
ks kaltura session key (should be user session with 'editadmintags:*' privilege) string yes ---
serviceUrl kaltura service url string yes ---
app client tag string yes ---
playerUrl kaltura player service url string yes ---
partnerId kaltura partner id number yes ---
uiConfId kaltura player id (player v3 required) number yes ---
conversionProfileId the conversion profile id to be used on the created entry number no 1
entryName name for the created entry string no Video/Audio Recording - [date]
allowVideo allow video streaming boolean no true
allowAudio allow audio streaming boolean no true
allowScreenShare allow screen sharing boolean no false
maxRecordingTime maximum time for recording in seconds number no unlimited
showUploadUI show upload progress and cancel button during upload boolean no true

Events:

Event Types:
  • error: fired when errors occur. event.detail.message holds error text
  • recordingStarted: fired when countdown to recording starts
  • recordingEnded: fired when recording ends
  • recordingCancelled: fired after a recording is cancelled
  • mediaUploadStarted: fires after entry has been created and media upload start. Returns entryId by event.detail.entryId
  • mediaUploadProgress: describes upload progress. event.detail.loaded holds the amount of bytes loaded, event.detail.total holds the total amount of bytes to be loaded.
  • mediaUploadEnded: fires after media upload has been ended. Returns entryId by event.detail.entryId
  • mediaUploadCancelled: fires when media upload has been canceled by the user. Returns entryId by event.detail.entryId
Listening to Events

const component = Kaltura.ExpressRecorder.create('parent_div_id', {...}); component.instance.addEventListener(eventType, callback);

Methods:

  • startRecording() clears existing recording if exists and starts the recording countdown.
  • stopRecording() stops an ongoing recording.
  • saveCopy() after recording exists, saves a local copy of the recorded media.
  • upload() uploads the latest recording to Kaltura.
  • cancelUpload() cancels an ongoing upload.
  • addEventListener(type: string, listener: (event: ExpressRecorderEvent) => void) allows listening to recorder events.
  • removeEventListener(type: string, callback: (event: ExpressRecorderEvent) => void) stops listening to recorder events.

How you can help (guidelines for contributors)

Thank you for helping Kaltura grow! If you'd like to contribute please follow these steps:

Where to get help

Get in touch

You can learn more about Kaltura and start a free trial at: http://corp.kaltura.com
Contact us via Twitter @Kaltura or email: community@kaltura.com
We'd love to hear from you!

License and Copyright Information

All code in this project is released under the AGPLv3 license unless a different license for a particular library is specified in the applicable library path.

Copyright © Kaltura Inc. All rights reserved.
Authors and contributors: See GitHub contributors list.

Open Source Libraries

Review the list of Open Source 3rd party libraries used in this project.