{"id":49665152,"url":"https://github.com/christitustech/resolve-linux","last_synced_at":"2026-05-06T15:08:04.304Z","repository":{"id":354530860,"uuid":"1224046787","full_name":"ChrisTitusTech/resolve-linux","owner":"ChrisTitusTech","description":"Tools for Resolve on Linux","archived":false,"fork":false,"pushed_at":"2026-04-29T00:50:47.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-29T01:14:56.430Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChrisTitusTech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-28T23:00:05.000Z","updated_at":"2026-04-29T00:50:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ChrisTitusTech/resolve-linux","commit_stats":null,"previous_names":["christitustech/resolve-linux"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ChrisTitusTech/resolve-linux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChrisTitusTech%2Fresolve-linux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChrisTitusTech%2Fresolve-linux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChrisTitusTech%2Fresolve-linux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChrisTitusTech%2Fresolve-linux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChrisTitusTech","download_url":"https://codeload.github.com/ChrisTitusTech/resolve-linux/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChrisTitusTech%2Fresolve-linux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32699322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-06T15:08:03.228Z","updated_at":"2026-05-06T15:08:04.298Z","avatar_url":"https://github.com/ChrisTitusTech.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# resolve-linux\n\nBatch transcode media to **DaVinci Resolve–friendly formats** on Linux using freely available codecs.\n\nThis repository also includes a backup utility for moving DaVinci Resolve setup\nto a new Linux machine, including installation files and custom settings.\n\n## Overview\n\n`resolve_convert.sh` recursively scans directories, converts all media files to formats optimized for DaVinci Resolve, and preserves your folder structure in the output directory.\n\n- **Video** → DNxHR (.mov) — Professional intermediate codec, works seamlessly in Resolve\n- **Audio** → PCM 24-bit 48 kHz (.wav) — Lossless, universal, zero compatibility issues\n\n## Features\n\n✅ **Recursive directory scanning** — automatically processes all subdirectories  \n✅ **Folder structure mirroring** — output preserves your project layout  \n✅ **Configurable quality levels** — LB, SQ, HQ, HQX, 444  \n✅ **Parallel processing** — speed up conversions with GNU parallel  \n✅ **Dry-run mode** — preview conversions before committing  \n✅ **Error handling** — skip existing files, report failures  \n✅ **Linux-native** — no proprietary software required  \n\n## Resolve Backup Script\n\nUse `resolve_backup.sh` to create a single archive that can be restored on a new\nPC. It captures:\n\n- `/opt/resolve` (application install)\n- `/usr/share/fonts`, `/usr/local/share/fonts`, `/etc/fonts` (system fonts/fontconfig)\n- `~/.local/share/DaVinciResolve` (LUTs, Fusion templates, scripts, macros)\n- `~/.config/Blackmagic Design/DaVinci Resolve` (preferences, hotkeys)\n- `~/.local/share/BlackmagicDesign/DaVinci Resolve` (additional user data)\n- `~/.local/share/fonts`, `~/.fonts`, `~/.config/fontconfig` (user fonts/fontconfig)\n\n### Backup Exclusions\n\nThe backup intentionally excludes the following inside `/opt/resolve`:\n\n- `/opt/resolve/plugins`\n- `/opt/resolve/LUT`\n\n### Backup Usage\n\n```bash\nchmod +x resolve_backup.sh\n./resolve_backup.sh --output-dir ~/backups\n```\n\nDry-run preview:\n\n```bash\n./resolve_backup.sh --dry-run\n```\n\nRun built-in end-to-end self-test:\n\n```bash\n./resolve_backup.sh --self-test\n```\n\nSkip system font paths (useful for smaller backup/testing):\n\n```bash\n./resolve_backup.sh --no-system-fonts\n```\n\nThe script is verbose by default and validates archive integrity after creation.\n\n### Restore Usage\n\nRestore directly from an archive file:\n\n```bash\n./resolve_backup.sh --restore inputfile.tar.gz\n```\n\nRestore to custom target paths (useful for testing/migration staging):\n\n```bash\n./resolve_backup.sh \\\n  --restore inputfile.tar.gz \\\n  --restore-home /home/targetuser \\\n  --restore-opt /opt \\\n  --restore-root /\n```\n\nRestore options summary:\n\n- `-r, --restore FILE` restore from backup archive\n- `--restore-home DIR` restore `payload/home/\u003cuser\u003e/...` into `DIR`\n- `--restore-opt DIR` restore `payload/opt/...` into `DIR`\n- `--restore-root DIR` restore `payload/system/...` into `DIR`\n\n## Requirements\n\n- **ffmpeg** (with DNxHD/DNxHR encoder support)\n- **bash** 4.0+\n- Optional: **GNU parallel** (for multi-threaded conversions)\n\n### Installation\n\n**Arch Linux:**\n```bash\nsudo pacman -S ffmpeg\n```\n\n**Debian/Ubuntu:**\n```bash\nsudo apt install ffmpeg\n```\n\nOptional parallel processing:\n```bash\nsudo apt install parallel          # Debian/Ubuntu\nsudo pacman -S parallel            # Arch\n```\n\n## Usage\n\n```bash\nchmod +x resolve_convert.sh\n./resolve_convert.sh [OPTIONS] [PATH]\n```\n\n### Options\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `-o DIR` | Custom output directory | `\u003cPATH\u003e/resolve_ready` |\n| `-q QUALITY` | DNxHR profile: `lb`, `sq`, `hq`, `hqx`, `444` | `hq` |\n| `-j N` | Parallel jobs (requires GNU parallel) | `1` |\n| `-n` | Dry-run — preview without converting | — |\n| `-h` | Show help | — |\n\n### Examples\n\nConvert everything in current directory:\n```bash\n./resolve_convert.sh\n```\n\nConvert a specific folder:\n```bash\n./resolve_convert.sh /mnt/footage\n```\n\nCustom output location:\n```bash\n./resolve_convert.sh -o /mnt/edit /mnt/raw\n```\n\nHigh quality (12-bit) with 2 parallel jobs:\n```bash\n./resolve_convert.sh -q hqx -j 2 /mnt/raw\n```\n\nPreview conversions (dry-run):\n```bash\n./resolve_convert.sh -n /mnt/footage\n```\n\n## Output Formats\n\n### Video Codec Options\n\n| Profile | Name | Bitrate | Use Case |\n|---------|------|---------|----------|\n| `lb` | DNxHR LB | ~100 Mbps | Proxy/offline editing |\n| `sq` | DNxHR SQ | ~220 Mbps | Standard quality |\n| `hq` | DNxHR HQ | ~440 Mbps | High quality (default) |\n| `hqx` | DNxHR HQX | ~660 Mbps | 12-bit, high quality |\n| `444` | DNxHR 444 | ~880 Mbps | 4:4:4, maximum quality |\n\n**Container:** QuickTime (.mov) — native support in Resolve\n\n### Audio\n\n**Codec:** PCM (signed 24-bit linear)  \n**Sample Rate:** 48 kHz (Resolve standard)  \n**Channels:** Stereo  \n**Container:** WAV  \n\n## Folder Structure Example\n\n```\n/mnt/footage/\n  day1/clip_a.mp4\n  day1/clip_b.mkv\n  day2/interview.mov\n  bgm.mp3\n  ↓\n/mnt/footage/resolve_ready/\n  day1/clip_a.mov\n  day1/clip_b.mov\n  day2/interview.mov\n  bgm.wav\n```\n\n## Supported Input Formats\n\n**Video:** mp4, mkv, avi, mov, mxf, wmv, flv, webm, ts, m2ts, mts, mpg, mpeg, m4v, 3gp, ogv, vob, rmvb, rm, asf, divx, dv, f4v, hevc, h264, h265\n\n**Audio:** mp3, aac, flac, ogg, m4a, wma, aiff, aif, opus, wav, ape, alac, mka, ac3, dts, eac3, amr, au, ra\n\n## Workflow Tips\n\n1. **Test first:** Use `-n` (dry-run) to preview before actual conversion\n2. **Monitor space:** DNxHR HQ produces ~660 MB/minute; ensure sufficient disk space\n3. **Proxy editing:** Use `-q lb` for faster initial edits, re-link to high-quality originals later\n4. **Batch processing:** Combine with `-j` for parallel conversions on multi-core systems\n5. **Network storage:** Conversions may be slower on network drives; consider local temporary storage\n\n## Troubleshooting\n\n### Fix Missing User Fonts in Resolve\n\nBy default, DaVinci Resolve may only resolve fonts from the system font path\n(`/usr/share/fonts`), so fonts installed per-user might not appear.\n\nTo include user fonts, update the Fusion font path map:\n\n1. Open **Fusion Settings** in DaVinci Resolve.\n2. Go to **Path Map**.\n3. Find **Fonts:**.\n4. Change the value from:\n\n  `SystemFonts:`\n\n  to:\n\n  `SystemFonts:;$HOME/.local/share/fonts`\n\n5. Save settings and restart DaVinci Resolve.\n\nAfter restart, Resolve should discover fonts installed in your user font directory.\n\n**\"ffmpeg build does not include the DNxHD/DNxHR encoder\"**\n- Your ffmpeg build lacks DNxHD support. Reinstall with: `sudo pacman -S ffmpeg` or `sudo apt install ffmpeg`\n\n**\"GNU parallel not found — running sequentially\"**\n- Install GNU parallel for multi-threaded conversions, or proceed single-threaded\n\n**No files found**\n- Verify the path exists and contains supported media files\n- Check that files aren't in the output directory (automatically excluded)\n\n**Conversion failed for a file**\n- Check ffprobe can read the file: `ffprobe input.mp4`\n- Verify ffmpeg supports the codec: `ffmpeg -decoders | grep codec_name`\n- Consider re-encoding the source with a standard encoder\n\n## Performance\n\nOn a modern multi-core system (e.g., 6-core CPU):\n- **Sequential:** ~100 Mbps throughput\n- **Parallel (6 jobs):** ~400–500 Mbps throughput\n\nDNxHR HQ bitrate: ~660 Mbps = ~82 MB/s  \nExpected time per minute of video: ~0.5–1 second (depending on system and quality)\n\n## License\n\nMIT License — see [LICENSE](LICENSE) for details\n\n## Contributing\n\nContributions are welcome! Please see [.github/CONTRIBUTING.md](.github/CONTRIBUTING.md) for guidelines.\n\n## Author\n\nCreated for DaVinci Resolve workflows on Linux.\n\n---\n\n**Ready to convert?**\n```bash\n./resolve_convert.sh /path/to/footage\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristitustech%2Fresolve-linux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchristitustech%2Fresolve-linux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristitustech%2Fresolve-linux/lists"}