{"id":17858482,"url":"https://github.com/tensoraws/finalrip","last_synced_at":"2026-01-12T06:50:32.896Z","repository":{"id":236616332,"uuid":"726696950","full_name":"TensoRaws/FinalRip","owner":"TensoRaws","description":"a distributed AI video processing tool","archived":false,"fork":false,"pushed_at":"2025-02-01T23:30:05.000Z","size":218,"stargazers_count":85,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-09T15:03:06.364Z","etag":null,"topics":["asynq","computer-vision","docker","ffmpeg","finalrip","gin","go","golang","vapoursynth","video-processing"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TensoRaws.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-03T05:22:46.000Z","updated_at":"2025-04-04T16:07:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"e5101d94-3544-494e-858c-97be99fb4a60","html_url":"https://github.com/TensoRaws/FinalRip","commit_stats":{"total_commits":42,"total_committers":1,"mean_commits":42.0,"dds":0.0,"last_synced_commit":"fd8f7186aecbd3471945304aa288401be774e707"},"previous_names":["srvfi-raws/finalrip","tensoraws/finalrip"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TensoRaws%2FFinalRip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TensoRaws%2FFinalRip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TensoRaws%2FFinalRip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TensoRaws%2FFinalRip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TensoRaws","download_url":"https://codeload.github.com/TensoRaws/FinalRip/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248055275,"owners_count":21040156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["asynq","computer-vision","docker","ffmpeg","finalrip","gin","go","golang","vapoursynth","video-processing"],"created_at":"2024-10-28T05:07:06.071Z","updated_at":"2025-04-09T15:04:20.874Z","avatar_url":"https://github.com/TensoRaws.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FinalRip\n\na distributed video processing tool, based on FFmpeg and VapourSynth\n\n[![CI-test](https://github.com/TensoRaws/FinalRip/actions/workflows/CI-test.yml/badge.svg)](https://github.com/TensoRaws/FinalRip/actions/workflows/CI-test.yml)\n[![golangci-lint](https://github.com/TensoRaws/FinalRip/actions/workflows/golangci-lint.yml/badge.svg)](https://github.com/TensoRaws/FinalRip/actions/workflows/golangci-lint.yml)\n[![Docker Build CI](https://github.com/TensoRaws/FinalRip/actions/workflows/CI-docker.yml/badge.svg)](https://github.com/TensoRaws/FinalRip/actions/workflows/CI-docker.yml)\n[![Release](https://github.com/TensoRaws/FinalRip/actions/workflows/Release.yml/badge.svg)](https://github.com/TensoRaws/FinalRip/actions/workflows/Release.yml)\n[![CircleCI](https://dl.circleci.com/status-badge/img/circleci/RJWBNXdmdaDACvcacXFQ3e/Ge3dVaX4GmktGiL9Jb1ADB/tree/main.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/circleci/RJWBNXdmdaDACvcacXFQ3e/Ge3dVaX4GmktGiL9Jb1ADB/tree/main)\n\n### Architecture\n\n![FinalRip](https://raw.githubusercontent.com/TensoRaws/.github/refs/heads/main/finalrip.png)\n\n_We cut the original video into multiple clips, and then process each clip in parallel in queue order. After all clips are processed, we merge them into the final video._\n\n### Preparations\n\n- docker and docker-compose\n- Nvidia GPU / AMD GPU with ROCm support [(7000 series on WSL2)](https://github.com/TensoRaws/vs-playground/blob/main/docker-compose-rocm.yml)\n- GPU container runtime (optional)\n- make (optional)\n\n### Quick Deployment\n\nedit [Line 19](https://github.com/TensoRaws/FinalRip/blob/main/deploy/docker-compose/lite/docker-compose.yml#L19) to your LAN IP address\n\n```bash\ndocker-compose -f deploy/docker-compose/lite/docker-compose.yml up -d\n```\n\nIt will run all containers in a single host, then open `http://localhost:8989` in your browser to access the dashboard, open `http://localhost:8080` to access the Asynq monitor.\n\n### Start\n\n![Dashboard](https://raw.githubusercontent.com/TensoRaws/.github/refs/heads/main/finalrip.gif)\n\nWe use [this container](https://github.com/TensoRaws/vs-playground) as the base image, which contains FFmpeg, VapourSynth, PyTorch...\n\nSo in the dashboard, we can select a compatible script to process the video!\n\n### Distributed Deployment\n\nDeploy the system in a distributed way, you can refer to the [docker-compose](./deploy/docker-compose) directory for more details.\n\nfirst, run docker-compose-base.yml to start the basic services, and open Consul dashboard, add a K/V pair with key `finalrip.yml` and value is the content of [finalrip.yml](./conf/finalrip.yml) -- or your own configuration file\n\nthen, run docker-compose-server.yml to start the dashboard, server, cut worker, and merge worker services\n\nfinally, run docker-compose-encode.yml to start the encode worker services, we can deploy multiple encode workers in different hosts to speed up the encoding process\n\n_Note: we suggest that deploy oss service, cut \u0026 merge worker in the same host_\n\n### Configuration\n\nOverride the default configuration by setting:\n\n#### Environment variables \u003e\u003e Config File / Remote Config File (Consul)\n\nSpecial Env Variables:\n\n- `FINALRIP_REMOTE_CONFIG_HOST` Consul host, default is None, that means load config from local file. When set, it will load the config from the Consul K/V store. When set to `EASYTIER` / `easytier`, will try load config from `FINALRIP_EASYTIER_HOST:8500` (`10.126.126.251:8500` by default).\n- `FINALRIP_REMOTE_CONFIG_KEY` Consul key, default is `finalrip.yml`\n\n### A new script?\n\nIn [vs-playground](https://github.com/TensoRaws/vs-playground), we provide the same environment as the encode worker, so you can develop and test your script in the playground.\n\n### For Advanced User\n\n- API document: [here](https://apifox.com/apidoc/shared-0b6425d8-0140-4822-9f59-f1d6d7784b03)\n- Build your own `encode` image: refer to the [vs-playground](https://github.com/TensoRaws/vs-playground), and set the `Template Repo` name in dashboard if you wanna select a script from the repo's `templates` folder.\n\n### Build\n\n```bash\nmake all\nmake pt\n```\n\n`make pt-rocm` for AMD GPU\n\n### Reference\n\n- [asynq](https://github.com/hibiken/asynq)\n- [gin](https://github.com/gin-gonic/gin)\n- [FFmpeg](https://github.com/FFmpeg/FFmpeg)\n- [VapourSynth](https://github.com/vapoursynth/vapoursynth)\n\n### License\n\nThis project is licensed under the GPL-3.0 license - see the [LICENSE file](https://github.com/TensoRaws/FinalRip/blob/main/LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftensoraws%2Ffinalrip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftensoraws%2Ffinalrip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftensoraws%2Ffinalrip/lists"}