Video Import & Export (Desktop)
OBD-NINJA Desktop lets you attach a pre-recorded MP4 to an existing driving session (Import) and generate a new MP4 with the telemetry HUD composited on top (Export). Both the Dashboard layout and the video-linked GT View layout are supported.
1.Overview & requirements
You can link footage captured by the mobile app, or footage from an action cam or similar, to any driving session — and export telemetry-overlaid video files. Both import and export use the bundled FFmpeg, so there is nothing extra to install.
HDR export is the only feature that depends on extra hardware. Every other feature runs on a standard macOS or Windows machine.
| Supported OS | macOS / Windows desktop build |
| Encoder | Bundled FFmpeg (no install required) |
| HDR export (macOS) | Apple Silicon / Intel Mac — VideoToolbox HEVC hardware encoder |
| HDR export (Windows) | NVIDIA NVENC / Intel Quick Sync / AMD AMF HEVC encoder |
| Mobile video export | Not supported (this feature is desktop-only) |
2.Video import
Attach footage that wasn't captured by the mobile app — action cam clips, external recorders, etc. — to an existing session. Imported video is used as the playback video and as the background for GT View exports.
Import steps
- Open "View Driving Logs" from the home screen and pick the session you want to attach video to.
- An "Import" button appears next to the "Video" row in the record details (only for sessions without video yet).
- Tap it and choose the MP4 file in the system file picker.
- A progress dialog shows percentage and bytes in real time. You can press "Cancel" at any point to abort.
- Once the copy finishes, metadata (start time / duration) is parsed automatically and linked to the session.
- When you see the "Video imported" snackbar you're done — the video is now available on the playback screen.
Supported formats
Only MP4 (.mp4) files are accepted. Any codec packaged in .mp4 (H.264, HEVC, etc.) will import.
Playback and export still need a codec the OS decoder (AVFoundation on macOS, Media Foundation on Windows) can handle.
Copy behavior
| Transfer | Streamed in 4 MB chunks |
| Destination | Under the app's documents folder: videos/imported_<timestamp>.mp4 |
| Source file | Left in place (copied, not moved) |
| On cancel | Partial file is deleted automatically |
| On failure | Error dialog + partial file deleted |
Metadata parsing (start time)
To line up telemetry with the footage, the start time is resolved in this priority order:
- ffprobe / ffmpeg analysis — reads the creation_time tag and duration inside the file
- Filename inference — used when the name contains a recognizable YYYYMMDD_HHMMSS-style timestamp
- Session start/end + duration — the final fallback if neither is available
The video start time is essential for HDR export and telemetry sync. Import the original MP4 with its creation_time tag intact whenever possible. If the tag has been stripped by renaming or re-encoding, the session's start time is used as a fallback and the sync may not be exact.
After import
- The "Video" row in the record details flips to "Present".
- Playback now shows the footage synced to telemetry.
- The export screen enables GT View layout, HDR export, and the glitch effect.
Re-importing or replacing
The Import button is hidden once a session already has video. To swap the clip, detach the existing video from the record details menu first, then import again.
3.Starting an export
- Pick the session from the list and open its playback screen.
- Pause at any point and press the export button (it will auto-pause if you were still playing).
- The export settings screen opens — choose resolution, FPS, speed, and so on.
- Press "Start export" and a save-as dialog asks for destination and filename.
- Once you confirm, encoding begins and a progress dialog appears.
- When it finishes, the new file is revealed automatically in Finder / Explorer.
The export covers the session from start to end. Trimming a specific range is not supported yet.
4.Export settings
The settings screen lets you pick resolution, FPS, playback speed, and visual effects. Orientation (landscape / portrait) is inherited from the playback layout automatically.
Resolution
| Option | Pixels | Typical use |
|---|---|---|
| 720p | 1280 × 720 | Social sharing, lightweight files |
| 1080p | 1920 × 1080 | Standard (default) |
| 4K | 3840 × 2160 | High quality, editing source |
Orientation (landscape vs portrait) is inherited automatically from the playback layout.
FPS (frame rate)
Choose 24, 30, or 60 fps. The default is 30.
- 24 fps — cinematic look
- 30 fps — the general-purpose standard
- 60 fps — smooth motion (roughly 2× the file size)
Speed
| Option | Details |
|---|---|
| Real time (1x) | Output matches the real driving duration |
| 2x / 4x / 8x | 2×–8× faster — useful for condensing long drives |
Timelapse footage (shown at 4× or faster with a source video)
Turning this on thins out source-video frames to emphasize that stop-motion timelapse feel. The source video updates at roughly 12 fps while the telemetry HUD overlays smoothly on top.
HDR export (GT View only)
Turn this on to export in HEVC (H.265) 10-bit / BT.2020 / PQ. Supported displays show richer color and higher brightness.
HDR requires all of the following
- Layout is GT View
- A source video exists
- The source video has start-time information
- A compatible hardware HEVC encoder is available on the OS
HDR export is only supported in GT ViewHDR export requires a source videoHDR export requires the source video's start timeHDR export requires a compatible hardware HEVC encoder
HDR and the glitch effect are mutually exclusive — turning HDR on automatically turns the glitch effect off.
Glitch effect (when a source video is present)
Overlays RPM-driven video noise on the source footage.
- Nearly invisible at low RPM
- Distorts strongly as RPM climbs
- Cannot be combined with HDR export
Estimated file size
The estimate updates live as you change settings.
- Baseline: 1080p / 30fps / real time ≈ 80 MB per minute
- Calculated from resolution, FPS, recording length, and speed multiplier
- It's an estimate — actual size can vary by about ±30% depending on footage complexity
5.Pipeline & duration
Export pipeline
The progress dialog shows these stages in order:
- Preparing… — validate input and reserve temp storage
- Extracting frames… (GT View only) — expand the source video to PNG frames
- Rendering… — composite the HUD on top and generate frame images
- Encoding… — FFmpeg writes the MP4
- Done
Elapsed and remaining time are displayed too. You can press Cancel at any point; any partial output file is cleaned up automatically.
Typical export times
| Mode | Setup | Approximate time |
|---|---|---|
| Dashboard | 1080p / 30fps / 60 seconds | 30–40 s |
| GT View | 1080p / 30fps / 60 seconds | 60–80 s |
| Timelapse 8x | 1080p / 30fps — 60 s compressed to 7.5 s | 5–10 s |
| 4K export | 30fps / 60 seconds | 2–3 min |
Actual times depend on your PC spec and the length of the source video.
6.Disk usage & output specs
Disk usage (GT View)
GT View temporarily expands the source video to PNG frames. Watch free-space headroom for long, high-resolution exports.
| Resolution | 30fps × 60 s | 30fps × 10 min |
|---|---|---|
| 720p | ~0.9 GB | ~9 GB |
| 1080p | ~1.8 GB | ~18 GB |
| 4K | ~5.4 GB | ~54 GB |
Temp files are deleted after export finishes, and any leftovers are swept on the next app launch.
Output file spec
| Format | MP4 (H.264, or HEVC for HDR) |
| Default filename | obd_ninja_<timestamp>.mp4 |
| Audio | Included at AAC 128 kbps when a source video is attached and timelapse is OFF (pitch/tempo adjusted to match the speed multiplier). No audio when there is no source video or when timelapse is ON. |
| Color (SDR) | BT.709 |
| Color (HDR) | BT.2020 / PQ (SMPTE 2084), 10-bit (p010le) |
7.Troubleshooting
Common symptoms and fixes for both import and export.
| Symptom | What to try |
|---|---|
| Import button is missing | The session already has a video. Detach the existing one first, then re-import. |
| Error immediately after selecting the file | Check free disk space — the destination needs room equal to the source file. |
| Imported video won't play | The codec may not be supported by the OS default player. Convert to H.264 MP4 and import again. |
| Video and telemetry are out of sync | When creation_time is missing, playback falls back to session start. Use footage captured by the mobile app or keep the original creation_time tag intact. |
| "Export failed" dialog | Check free disk space and confirm the source video file hasn't been moved or deleted. Very short recordings (fewer than two playback points) can't be exported. |
| HDR toggle won't enable | The settings screen shows the reason in a subtext — check GT View layout, source video presence, and the OS hardware HEVC encoder, in that order. |
| HDR output looks washed out | HDR requires a compatible player and display. On SDR displays, tone mapping can make contrast look weak. |
| App feels sluggish during 4K export | 4K is heavy per frame. Close other apps, drop to 1080p, or turn on timelapse to reduce total frame count. |
| Partial file left behind after cancel | It's usually cleaned up automatically. Anything left after a hard crash is swept from exports/temp_* on next launch. |
8.Known limitations
- Trimming (partial-range export) is not supported. Exports always cover the entire session.
- Timelapse exports are always silent — the source video's audio is not included.
- Watermarks and text overlays are not supported.
- Portrait presets for Instagram / TikTok are planned for a future release.
Download OBD NINJA
Free on iOS and Android.