Skip to content

Commit

Permalink
major feat: audio-recorder-polyfill replaces recordRTC
Browse files Browse the repository at this point in the history
  • Loading branch information
braden-w committed May 30, 2023
1 parent 749cde4 commit 01aa1d3
Showing 5 changed files with 13 additions and 35 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -39,6 +39,7 @@
"dependencies": {
"@sveltejs/adapter-cloudflare": "^2.2.0",
"@tauri-apps/api": "^1.2.0",
"audio-recorder-polyfill": "^0.4.1",
"recordrtc": "^5.6.2",
"svelte-french-toast": "1.0.4-beta.0"
}
7 changes: 7 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion src/lib/recorder/mediaRecorder.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import AudioRecorder from 'audio-recorder-polyfill';

/**
* This implementation uses the native mediaRecorder api.
* Unfortunately, it didn't reliably work with Safari or Tauri.
@@ -10,7 +12,8 @@ let recordedChunks: Blob[] = [];

export async function startRecording(): Promise<void> {
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
mediaRecorder = new MediaRecorder(stream);
mediaRecorder = new AudioRecorder(stream);
if (!mediaRecorder) throw new Error('MediaRecorder is not initialized.');
mediaRecorder.addEventListener('dataavailable', (event: BlobEvent) => {
recordedChunks.push(event.data);
});
30 changes: 0 additions & 30 deletions src/lib/recorder/mediaRecorderSafari.ts

This file was deleted.

5 changes: 1 addition & 4 deletions src/routes/+page.svelte
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<script lang="ts">
import { startRecording, stopRecording } from '$lib/recorder/mediaRecorder';
import { apiKey } from '$lib/stores/apiKey';
import { writeText } from '$lib/system-apis/clipboard';
import { registerShortcut, unregisterAllShortcuts } from '$lib/system-apis/shorcuts';
@@ -22,10 +23,6 @@
return;
}
const { startRecording, stopRecording } = /Chrome/.test(navigator.userAgent)
? await import('$lib/recorder/mediaRecorder')
: await import('$lib/recorder/recordRtcRecorder');
if (!isRecording) {
await setAlwaysOnTop(true);
await startRecording();

0 comments on commit 01aa1d3

Please sign in to comment.