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.
Officially supported browsers: Chrome, Firefox, Opera.
- git clone
- npm install
(assuming this failed running because node-sass issues, try npm ci instead)
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'
clone index.template.ejs into index.ejs (Same dir) and fill in the needed properties.
execute - "npm run serve"
- fill props in expressRecorder.stories.jsx
- yarn run storybook
- update the package.json file with the new version
- npm run build
- copy files located under 'dist' folder to your project, or use the zip file with the version name.
- attach the zip created (on the root of the project) to the release notes.
const component = Kaltura.ExpressRecorder.create('parent_div_id', { list of props for expressRecorder components in form of 'prop': 'value' });
- unzip
v<version number>.zip
(attached to version release notes) toKaltura-server/apps/expressrecorder/v<version number>
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 |
- 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
const component = Kaltura.ExpressRecorder.create('parent_div_id', {...}); component.instance.addEventListener(eventType, callback);
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.
Thank you for helping Kaltura grow! If you'd like to contribute please follow these steps:
- Use the repository issues tracker to report bugs or feature requests
- Read Contributing Code to the Kaltura Platform
- Sign the Kaltura Contributor License Agreement
- Join the Kaltura Community Forums to ask questions or start discussions
- Read the Code of conduct and be patient and respectful
You can learn more about Kaltura and start a free trial at: http://corp.kaltura.com
Contact us via Twitter @Kaltura or email: [email protected]
We'd love to hear from you!
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.
Review the list of Open Source 3rd party libraries used in this project.