[Roboflow Rapid] - "Failed to load metadata error" uploading Quicktime MP4s on Safari Browser

Environment

  • Roboflow Rapid - https://rapid.roboflow.com
  • Browser: Safari Version 26.2 (21623.1.14.11.9)
  • Device: Mac (Photobooth/QuickTime export)

Behavior

Videos recorded via PhotoBooth/QuickTime fail to initialize during upload on Safari (works on Chrome). This include both .mov files and .mp4 files converted per Apple’s instructions of simply modifying the file extension from .mov to .mp4 (link) The UI reports an upload failure, even though the file successfully uploads to Google Firestore.

UI Error

Stacktrace

[Error] 🐞[DEBUG - addMediaItems] Error creating queue item
Error: Failed to load video metadata — videoEditing.ts:635
	(anonymous function) (index-DJi5QsYz.js:3305:134624)
	(anonymous function) (index-DJi5QsYz.js:3716:50697)

Troubleshooting Steps

Changing the file extension seems to change the label but keeps the internal qt structure intact.

ffprobe -v error -show_format -show_streams -print_format json example.mp4 | jq '{
  filename: .format.filename,
  size_mb: ((.format.size | tonumber) / 1024 / 1024 | round),
  major_brand: .format.tags.major_brand,
  video: .streams[] | select(.codec_type=="video") | {codec: .codec_name, profile: .profile, level: .level, pix_fmt: .pix_fmt, width: .width, height: .height},
  audio: .streams[] | select(.codec_type=="audio") | {codec: .codec_name, channels: .channels}
}'
{
  "filename": "/Users/maxwinslow/Documents/roboquick.mp4",
  "size_mb": 17,
  "major_brand": "qt  ",
  "video": {
    "codec": "h264",
    "profile": "High",
    "level": 40,
    "pix_fmt": "yuv420p",
    "width": 1620,
    "height": 1080
  },
  "audio": {
    "codec": "aac",
    "channels": 1
  }
}

This means the metadata remains trapped at the end of the file where Safari cannot find it during the initial upload request. Therefore it rejects the content after its first request for the first 1446 bytes

Summary
URL: blob:https://rapid.roboflow.com/XXX
Status: 206 Partial Content
Source: Network

Request
Accept: */*
Origin: https://rapid.roboflow.com
Range: bytes=0-1445
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.2 Safari/605.1.15

Response
Content-Length: 1446
Content-Range: bytes 0-1445/18106902
Content-Type: video/webm
Referrer-Policy: strict-origin-when-cross-origin

I first thought a workaround could be remuxing the file. This allows the initial upload to succeed.

~ ffmpeg -i example.mp4 -c copy -map_metadata 0 -brand mp42 -movflags +faststart fixed_ example.mp4

~ ffprobe -v error -select_streams v:0 -show_entries format_tags=major_brand,compatible_brands -of default=noprint_wrappers=1 fixed_ example.mp4                          
TAG:major_brand=mp42
TAG:compatible_brands=mp42iso2avc1mp41

Unfortunately, even though the initial upload eventually succeeds, the malformed structure seems to trigger a memory spike and OOM for the FFMpeg worker that prevents proceeding to “Upload the Trimmed Video”

[Error] 🎬 [generateVideoThumbnails] Failed to generate thumbnails via ffmpeg: – "RuntimeError: Out of bounds memory access (evaluating 'Module[\"_ffmpeg\"](args.length, stringsToPtr(args))')"
	(anonymous function) (index-DJi5QsYz.js:3305:134624)
	generateVideoThumbnails (index-DJi5QsYz.js:44:281101)

Workaround

Use Chrome