0.0.1 • Published 2 years ago

screen-recorder-angular v0.0.1

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

ScreenRecorder for Angular

An Angular component that can record the screen

简体中文 | English

Install

npm install screen-recorder-angular --save

Usage

  • 1 . Simple use

    • in app.module.ts
    import { ScreenRecorderModule } from 'screen-recorder-angular';
    
    @NgModule({
      // ...
      imports: [
        // ...
        ScreenRecorderModule
      ]
    })
    • in app.component.html
      <!-- your ohter content -->
      <app-screen-recorder></app-screen-recorder>
      <!-- your ohter content -->
  • 2 . Enable preview and customize some information

    • in app.module.ts
    import { ScreenRecorderModule } from 'screen-recorder-angular';
    
    @NgModule({
      // ...
      imports: [
        // ...
        ScreenRecorderModule
      ]
    })
    • in app.component.ts
    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css']
    })
    export class AppComponent {
    
      // your other content...
    
      videoOptions: MediaTrackConstraints = {
        width: 1920,
        height: 1080,
        frameRate: 60,
      };    
    }
    • in app.component.html
      <!-- your ohter content -->
      <app-screen-recorder
        [preview]="true"
        shortKey="Alt+Shift+R"
        startBtnText="🛫 开始"
        startBtnStyle="color:#48bfa7"
        endBtnText="🛑 结束"
        endBtnStyle="color: red"
        [videoOptions]="videoOptions"
      >
      </app-screen-recorder>
      <!-- your ohter content -->
  • 3 . Listening event callback

    • in app.module.ts
    import { ScreenRecorderModule } from 'screen-recorder-angular';
    
    @NgModule({
      // ...
      imports: [
        // ...
        ScreenRecorderModule
      ]
    })
    • in app.component.ts
    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css']
    })
    export class AppComponent {
    
      // your other content...
    
      onStart = (event: { mediaStream: MediaStream }) => {
        /** Your logic code **/
      }
    
      onError = (event: { err: unknown }) => {
        /** Your logic code **/
      }
    
      onUnsupport = () => {
        /** Your logic code **/
      }
      
      onEnd = (event: { url: string, blob: Blob }) => {
        /** Your logic code **/
      }
    }
    • in app.component.html
      <!-- your other content -->
      <app-screen-recorder
        [preview]="true"
        (onRecordingStart)="onStart($event)"
        (onRecordingEnd)="onEnd($event)"
        (onRecordingUnsupport)="onUnsupport()"
        (onRecordingError)="onError($event)"
      >
      </app-screen-recorder>
      <!-- your other content -->
  • 4 . Custom view

    • in app.module.ts
    import { ScreenRecorderModule } from 'screen-recorder-angular';
    
    @NgModule({
      // ...
      imports: [
        // ...
        ScreenRecorderModule
      ]
    })
    • in app.component.ts
    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css']
    })
    export class AppComponent {
    
      // your other content...
    
      recording = false
    
      start = (startEvent: Function) => {
        startEvent();
        this.recording = true;
      };
    
      customRecordingEnd = ({ url }: { url: string }) => {
        this.recording = false;
        console.log(url);
        // to do sth for url
      };  
    }
    • in app.component.html
      <!-- your ohter content -->
      <app-screen-recorder
        [preview]="true"
        (onRecordingEnd)="customRecordingEnd($event)"
      >
        <ng-template startContent let-startEvent="startEvent">
          <!-- your custom view for startContent -->
          <button *ngIf="!recording" (click)="start(startEvent)">
            开始录屏
          </button>
        </ng-template>
    
        <ng-template endContent let-endEvent="endEvent">
          <!-- your custom view for endContent -->
          <button *ngIf="recording" (click)="endEvent()">
            结束录屏
          </button>
        </ng-template>
    
        <ng-template previewContent let-mediaStream="mediaStream">
          <!-- your custom view for previewContent -->
          <video
            muted
            autoplay
            width="500"
            style="display: block;"
            [srcObject]="mediaStream"
          >
          </video>
        </ng-template>
    
      </app-screen-recorder>
      <!-- your ohter content -->

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
onRecordingUnsupportvoidrecorder API unsupported
onRecordingError{ err: unknown }recorder error

projection

projection-selectorcontext-parameter-listdesc
startContent{ startEvent: Function, endEvent: Function }Customize the view that triggers the start screen recording event;startEvent: start screen recording, endEvent: end screen recording
endContent{ endEvent: Function, startEvent: Function }Customize the view that triggers the end screen recording event; endEvent: end screen recording, startEvent: start screen recording
previewContent{ mediaStream: MediaStream }Customize video preview,mediaStream: it is the captured screen media stream, which can be assigned to the scrobject of video to preview and play