Summary
An .openscreen project authored on Windows opens on macOS with an empty preview, no waveform, and no working transcription. The media files can be present and perfectly valid — the project simply never points at them.
The media-links registry already holds the correct local path, so the relink mechanism has the right answer and is not applied on project open.
Root cause
The project stores absolute media paths:
"originalPath": "C:\\Users\\camil\\AppData\\Roaming\\openscreen\\recordings\\recording-1785170318238.mp4",
"sourcePath": "C:\\Users\\camil\\AppData\\Roaming\\openscreen\\recordings\\recording-1785170318238-webcam.mp4"
On macOS, ffmpeg parses the leading C: as a URL scheme and fails with AVERROR_PROTOCOL_NOT_FOUND (0x4F5250F8, i.e. -1330794744). Confirmed directly against the LGPL ffmpeg the compositor links:
$ ffprobe 'C:\Users\camil\AppData\Roaming\openscreen\recordings\recording-1785170318238.mp4'
C:\Users\...\recording-1785170318238.mp4: Protocol not found
which is exactly what the app logs:
[live] render thread error: open_input a échoué (ret=-1330794744)
native bridge compositor.readFrame failed: Error: open_input a échoué (ret=-1330794744)
[renderer:warn] [compositor-view] readFrame failed: {}
[renderer:warn] useAudioPeaks: could not decode audio for waveform: {}
The renderer fails for the same reason, independently of the compositor: transcribeAsset builds toFileUrl(asset.originalPath) and useAudioPeaks fetches the same URL, so transcription and the waveform break too.
Why the existing relink does not save it
~/Library/Application Support/openscreen/recordings/media-links.registry.json already contains the correct macOS path for this exact media:
/Users/<user>/Downloads/recordings/recording-1785170318238.mp4
findMediaLinksByFingerprint / registerMediaLinks (electron/media/mediaLinksRegistry.ts) exist and the registry is populated, but nothing resolves assets[].originalPath through it when a project is opened. The data needed to fix the path at load time is present and unused.
Reproduce
- Record on Windows, save the project, copy the
.openscreen plus its media to a Mac.
- Open the project on macOS.
- Preview stays on the empty state, the timeline clip has no waveform,
Transcribe now cannot extract audio.
Adding the same media to the timeline by hand does not help: the clip inherits the same broken asset.
Impact
Every project authored on Windows is unusable on macOS (and the reverse case — a macOS /Users/... path opened on Windows — should fail the same way). Moving a project between machines on the same OS breaks identically whenever the media directory differs.
Suggested fix
Resolve each assets[].originalPath / cameraTrack.sourcePath through the media-links registry on project load, and fall back to a "locate this media" prompt when the fingerprint is unknown. Storing paths relative to the project file, or persisting the fingerprint alongside the path, would stop the situation arising in the first place.
Rewriting the two paths by hand is enough to make the project fully work on macOS — preview, webcam PiP, waveform and transcription all come back — which confirms nothing else is wrong with the project.
Environment
macOS 26.5 (Darwin 25.5), Apple M1, Electron 41.2.1, release/v1.8.0.
Summary
An
.openscreenproject authored on Windows opens on macOS with an empty preview, no waveform, and no working transcription. The media files can be present and perfectly valid — the project simply never points at them.The media-links registry already holds the correct local path, so the relink mechanism has the right answer and is not applied on project open.
Root cause
The project stores absolute media paths:
On macOS, ffmpeg parses the leading
C:as a URL scheme and fails withAVERROR_PROTOCOL_NOT_FOUND(0x4F5250F8, i.e.-1330794744). Confirmed directly against the LGPL ffmpeg the compositor links:which is exactly what the app logs:
The renderer fails for the same reason, independently of the compositor:
transcribeAssetbuildstoFileUrl(asset.originalPath)anduseAudioPeaksfetches the same URL, so transcription and the waveform break too.Why the existing relink does not save it
~/Library/Application Support/openscreen/recordings/media-links.registry.jsonalready contains the correct macOS path for this exact media:findMediaLinksByFingerprint/registerMediaLinks(electron/media/mediaLinksRegistry.ts) exist and the registry is populated, but nothing resolvesassets[].originalPaththrough it when a project is opened. The data needed to fix the path at load time is present and unused.Reproduce
.openscreenplus its media to a Mac.Transcribe nowcannot extract audio.Adding the same media to the timeline by hand does not help: the clip inherits the same broken asset.
Impact
Every project authored on Windows is unusable on macOS (and the reverse case — a macOS
/Users/...path opened on Windows — should fail the same way). Moving a project between machines on the same OS breaks identically whenever the media directory differs.Suggested fix
Resolve each
assets[].originalPath/cameraTrack.sourcePaththrough the media-links registry on project load, and fall back to a "locate this media" prompt when the fingerprint is unknown. Storing paths relative to the project file, or persisting the fingerprint alongside the path, would stop the situation arising in the first place.Rewriting the two paths by hand is enough to make the project fully work on macOS — preview, webcam PiP, waveform and transcription all come back — which confirms nothing else is wrong with the project.
Environment
macOS 26.5 (Darwin 25.5), Apple M1, Electron 41.2.1,
release/v1.8.0.