Skip to main content

Upload Audio & Video

Scriptix provides multiple methods to upload media files for transcription. This guide covers all available upload options and best practices.

Upload Methods Overview

Scriptix supports the following upload methods through the Uppy file uploader:

MethodDescriptionImplementation
Local FilesUpload from your computerDrag & drop or browse
WebcamRecord video directly@uppy/webcam
MicrophoneRecord audio directly@uppy/audio
Screen CaptureRecord screen with audio@uppy/screen-capture
Cloud StorageImport from cloud providersGoogle Drive, Dropbox, OneDrive, Box, Zoom
URLImport from direct media linksCustom URL plugin

File Size Limits

Maximum file size enforced in the upload component:

  • Client-side limit: 10 GB per file
  • Server configuration: 20 GB (production), 10 GB (staging)
const maxFileSize = 10 * 1024 * 1024 * 1024; // 10GB client-side check

Supported File Formats

Audio Formats

Verified supported audio formats:

  • MP3 (.mp3)
  • WAV (.wav)
  • M4A (.m4a)
  • AAC (.aac)
  • OGG (.ogg)
  • FLAC (.flac)
  • WMA (.wma)
  • AIFF (.aiff)

Video Formats

Verified supported video formats:

  • MP4 (.mp4)
  • MOV (.mov)
  • AVI (.avi)
  • MKV (.mkv)
  • WebM (.webm)
  • M4V (.m4v)
  • 3GP (.3gp)
  • FLV (.flv)
  • WMV (.wmv)
  • TS (.ts)

See Supported Formats for complete details.

Upload Protocol: TUS Resumable Uploads

All file uploads use the TUS protocol for resumable uploads:

Features:

  • Resumable - Interrupted uploads can resume from where they stopped
  • Chunked - Files uploaded in 50 MB chunks
  • Reliable - Retry logic with delays (0s, 3s, 5s, 10s, 20s, 30s, 60s)
  • Persistent - Fingerprints stored for resuming across sessions
.use(Tus, {
endpoint: `${API_BASE_URL}/api/v3/files/`,
retryDelays: [0, 3000, 5000, 10000, 20000, 30000, 60000],
chunkSize: 50 * 1024 * 1024, // 50MB chunks
storeFingerprintForResuming: true
})

Method 1: Upload from Computer

Drag and Drop

  1. Open the upload dialog
  2. Drag your audio or video file from your file explorer
  3. Drop it onto the upload area
  4. The file begins uploading automatically

Browse Files

  1. Click the Browse Files button in the upload dialog
  2. Navigate to your file location
  3. Select one or more files
  4. Click Open
  5. Upload begins automatically

Method 2: Record with Webcam

Record video directly in your browser.

Configuration

  • Modes: Video with audio
  • Video MIME type: video/webm (broad browser support)
  • Video source dropdown: Hidden for simplified UI
  • Recording length: Displayed

Steps

  1. Open the upload dialog
  2. Click the Webcam icon
  3. Grant camera and microphone permissions when prompted
  4. Click the record button to start recording
  5. Click stop when finished
  6. Select language
  7. Preview your recording
  8. Submit to upload

Browser Requirements

Requires browser support for MediaDevices API and getUserMedia. See System Requirements for details.

Method 3: Record Audio with Microphone

Record audio-only content directly in your browser.

Configuration

  • Audio source dropdown: Hidden for simplified UI
  • Format: Browser-dependent (typically webm or ogg)

Steps

  1. Open the upload dialog
  2. Click the Microphone or Audio icon
  3. Grant microphone permission when prompted
  4. Click the record button to start
  5. Speak into your microphone
  6. Click stop when finished
  7. Select language
  8. Review the recording
  9. Submit to upload

Method 4: Screen Capture

Record your screen with audio - ideal for tutorials, presentations, and demos.

Configuration

  • Video MIME type: video/webm
  • Screen sharing options: Controlled by browser
    • Entire screen
    • Application window
    • Browser tab

Steps

  1. Open the upload dialog
  2. Click the Screen Capture icon
  3. Grant screen sharing permission
  4. Choose what to share (screen, window, or tab)
  5. Click the record button
  6. Perform your screen actions
  7. Click stop when finished
  8. Select the language
  9. Preview the recording
  10. Submit to upload

Browser Support

Works on Chrome, Edge, and Firefox. Requires getDisplayMedia API support.

Method 5: Import from Cloud Storage

Import files directly from cloud storage providers.

Supported Providers

Based on installed Uppy plugins:

  • Google Drive - @uppy/google-drive
  • Dropbox - @uppy/dropbox
  • OneDrive - @uppy/onedrive
  • Box - @uppy/box
  • Zoom - @uppy/zoom

How It Works

  1. Click the icon for your cloud provider
  2. Authenticate with your cloud account (first time only)
  3. Navigate through your folders
  4. Select the file(s) to import
  5. Files upload directly from cloud storage to Scriptix

Benefit: No need to download files to your computer first.

Method 6: Import from URL

Import media files from direct URLs.

Requirements

  • Direct URL to a media file
  • File must be publicly accessible
  • No authentication required

Steps

  1. Open the upload dialog
  2. Click the URL or Link icon
  3. Paste the direct media URL
  4. Click Import or Submit
  5. Scriptix fetches and uploads the file

Upload Configuration

After selecting files, configure transcription settings:

Language Selection

Required: Select the spoken language from the dropdown.

The language parameter is passed to the STT session API:

{
language: string // Required
}

For supported languages, see Language Selection.

Speaker Diarization

Optional: Enable to automatically identify different speakers.

Toggle to enable/disable speaker identification:

{
diarization: boolean // Optional, defaults to organization setting
}

Default value comes from organization settings.

Document Type

Specify the type of document to create:

  • transcript - Standard transcript
  • caption - Subtitle/caption file
document: {
document_type: 'document' | 'caption',
filename: string
}

File Management

Allowed File Types

The upload component dynamically adjusts allowed file types based on document type:

For transcripts:

  • Video and audio formats

For captions:

  • Video, audio, and subtitle formats (.srt, .vtt, .sbv, .ttml, .html)

For alignment:

  • Video, audio, and document formats (.txt, .docx, .pdf, .doc, .html)

Upload State Management

The upload component tracks:

  • uploading - Upload in progress
  • isPaused - Upload paused
  • hasFiles - Files added to uploader
  • resultUppy - Upload results

Error Handling

File Size Exceeded

If a file exceeds the 10 GB client-side limit:

  • Error message displayed (from translation key: file-size-exceed)
  • File not added to upload queue

Upload Failures

TUS protocol automatically retries failed uploads with increasing delays:

  • Retry attempts: 7 times
  • Delays: 0s, 3s, 5s, 10s, 20s, 30s, 60s

Best Practices

File Preparation

  1. Check audio quality - Ensure clear audio before uploading
  2. Use appropriate formats - MP3 for audio, MP4 for video
  3. File naming - Use descriptive names for easy organization

Uploading

  1. Stable connection - Use wired connection for large files
  2. Resume capability - Don't restart - use TUS resume if interrupted
  3. Folder organization - Select target folder before uploading

Recording

  1. Test first - Record a short test before long sessions
  2. Monitor levels - Check audio levels during recording
  3. Quiet environment - Minimize background noise

Troubleshooting

Upload Fails

Check:

  • File format is supported
  • File size under 10 GB
  • Stable internet connection
  • Browser permissions granted

See Troubleshooting > Upload Issues

Recording Permissions Denied

Solution:

  • Grant permissions when browser prompts
  • Check browser settings for camera/microphone access
  • Ensure no other application is using the device

Cloud Storage Connection Issues

Solution:

  • Re-authenticate with the cloud provider
  • Check file permissions (must be accessible)
  • Verify cloud provider account status

Technical Details

Upload Endpoint

TUS uploads go to:

POST {API_BASE_URL}/api/v3/files/

With authentication header:

Authorization: Bearer {token}

File Fingerprinting

Each file gets a unique fingerprint for resumable uploads:

fingerprint: ['tus', file.name, file.type, file.size, uuid].join('-')

UUIDs are generated per file and stored for the session lifecycle.

Next Steps

After uploading your file:


Related Documentation:


Ready to upload? Choose your method above and start transcribing!