Vidtreo

Screen Capture

Record screen, windows, and browser tabs with VIDTREO.

Screen Capture

VIDTREO supports screen recording including full screen, application windows, and browser tabs.

Basic Screen Recording

import { useVidtreoRecorder } from '@vidtreo/recorder-react';

function ScreenRecorder() {
  const { state, actions } = useVidtreoRecorder({
    apiKey: import.meta.env.VITE_VIDTREO_API_KEY,
    onUploadComplete: (result) => console.log(result.uploadUrl),
  });

  return (
    <div>
      <video
        ref={(el) => el && state.stream && (el.srcObject = state.stream)}
        autoPlay
        muted
        playsInline
      />

      {state.recordingState === 'idle' && (
        <button onClick={() => actions.startRecording('screen')}>
          Record Screen
        </button>
      )}

      {state.recordingState === 'recording' && (
        <button onClick={() => actions.stopRecording()}>
          Stop Recording
        </button>
      )}
    </div>
  );
}

Camera + Screen Switching

Allow users to switch between camera and screen during recording:

import { VidtreoRecorder } from '@vidtreo/recorder-react';

function SwitchableRecorder() {
  return (
    <VidtreoRecorder
      apiKey={import.meta.env.VITE_VIDTREO_API_KEY}
      enableSourceSwitching={true}
      onUploadComplete={(result) => {
        console.log('Video:', result.uploadUrl);
      }}
    />
  );
}

Screen-Only Mode

Disable camera recording to show only screen capture:

function ScreenOnlyRecorder() {
  const { state, actions } = useVidtreoRecorder({
    apiKey: import.meta.env.VITE_VIDTREO_API_KEY,
    enableSourceSwitching: false,
  });

  useEffect(() => {
    // Start directly with screen
    actions.startPreview('screen');
  }, []);

  return (
    <div>
      <video
        ref={(el) => el && state.stream && (el.srcObject = state.stream)}
        autoPlay
        muted
      />
      <button
        onClick={() =>
          state.recordingState === 'idle'
            ? actions.startRecording('screen')
            : actions.stopRecording()
        }
      >
        {state.recordingState === 'idle' ? 'Record' : 'Stop'}
      </button>
    </div>
  );
}

Web Component

<vidtreo-recorder
  api-key="your-api-key"
  enable-source-switching="true"
></vidtreo-recorder>

<script>
  const recorder = document.querySelector('vidtreo-recorder');

  // Start with screen recording
  recorder.addEventListener('connected', () => {
    recorder.toggleSource(); // Switch to screen
  });
</script>

Screen Capture Options

The browser's screen picker allows users to select:

  • Entire Screen — Record everything on a monitor
  • Application Window — Record a specific app
  • Browser Tab — Record a single tab (with tab audio)

Notes

  • Screen recording requires explicit user permission
  • Tab audio capture only works for browser tabs, not windows/screens
  • Some browsers may limit screen recording on certain pages

Next Steps

On this page