0.0.6 • Published 2 years ago

screen-recorder-react v0.0.6

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

ScreenRecorder for React

A React component that can record the screen

简体中文 | English

Install

npm install screen-recorder-react --save

Usage

  • 1 . Simple use
import React from 'react'
import ScreenRecorder from 'screen-recorder-react'

interface IAppProps {
  // ...
}

const App: React.FC<IAppProps> = (props) => {
  // Your other logic code...
  return (
    <div>
      { /** Your other components... **/ }
      <ScreenRecorder />
    </div>
  )
}

export default App
  • 2 . Enable preview and customize some information
import React from 'react'
import ScreenRecorder from 'screen-recorder-react'

interface IAppProps {
  // ...
}

const videoOptions: MediaTrackConstraints = {
  width: 1920,
  height: 1080,
  frameRate: 60,
};

const App: React.FC<IAppProps> = (props) => {
  // Your other logic code...
  return (
    <div>
      { /** your other components... **/ }
      <ScreenRecorder
        preview
        shortKey="Alt+Shift+R"
        startBtnText="🛫 start"
        startBtnStyle={{ color: '#48bfa7' }}
        endBtnText="🛑 end"
        endBtnStyle={{ color: 'red' }}
        videoOptions={videoOptions}
      />
    </div>
  )
}

export default App
  • 3 . Listening event callback
import React from 'react'
import ScreenRecorder from 'screen-recorder-react'

interface IAppProps {
  // ...
}

const App: React.FC<IAppProps> = (props) => {
  
  const onStart = (mediaStream: MediaStream) => {
    /** Your logic code **/
  }
  const onError = (err: unknown) => {
    /** Your logic code **/
  }
  const onUnsupport = () => {
    /** Your logic code **/
  }
  const onEnd = (blobUrl: string, blob: Blob) => {
    /** Your logic code **/
  }

  return (
    <div>
      { /** your other components... **/ }
      <ScreenRecorder
        preview
        onRecordingStart={onStart}
        onRecordingEnd={onEnd}
        onRecordingUnsupport={onUnsupport}
        onRecordingError={onError}
      />
    </div>
  )
}

export default App
  • 4 . Custom view
import React from 'react'
import ScreenRecorder, { Video } from 'screen-recorder-react'

interface IAppProps {
  // ...
}

const startContent = (startEvent: Function) => {
  /** Your other logic code... **/
  return <button onClick={() => start(startEvent)}>start</button>
}

const endContent = (endEvent: Function) => {
  /** Your other logic code... **/
  return <button onClick={() => endEvent()}>end</button>
}

const previewContent = (mediaStream: MediaStream) => {
  /** Your other logic code... **/
  return (
  <Video
    muted
    autoPlay
    style={{ display: 'block' }}
    width={500}
    srcObject={mediaStream}
  />
  )
}

const App: React.FC<IAppProps> = (props) => {
  /** Your logic code... **/
  return (
    <div>
      { /** your other components... **/ }
      <ScreenRecorder
        preview
        startContent={startContent}
        endContent={endContent}
        previewContent={previewContent}
      />
    </div>
  )
}

export default App

props

propsNamerequiredtypedefaultdesc
shortKeyfalsestring-shortcut key for starting, if you set shortcut, ESC will be set as the shortcut key to end recording
previewfalsebooleanfalseshow preview
videoOptionsfalseMediaTrackConstraints-video options
startBtnTextfalsestring开始录屏the text for start-button
startBtnStylefalsestring-the style for start-button
endBtnTextfalsestring结束录屏the text for end-button
endBtnStylefalsestring-the style for end-button

events

eventsNameparamListdesc
onRecordingStart mediaStream: MediaStream recorder start
onRecordingEnd blobUrl: string, blob: Blob recorder end
onRecordingUnsupport[]recorder API unsupported
onRecordingError err: unknown recorder error

slot-props

slotPropsNametypedesc
startContent(startEvent: Function, endEvent: Function) => React.ReactNodeCustomize the view that triggers the start screen recording event;startEvent: start screen recording, endEvent: end screen recording
endContent(endEvent: Function, startEvent: Function) => React.ReactNodeCustomize the view that triggers the end screen recording event; endEvent: end screen recording, startEvent: start screen recording
previewContent(mediaStream: MediaStream) => React.ReactNodeCustomize video preview,mediaStream: it is the captured screen media stream, which can be assigned to the scrobject of video to preview and play