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
