{"id":13587065,"url":"https://github.com/tgotwig/vidmerger","last_synced_at":"2025-04-05T04:09:42.478Z","repository":{"id":43476487,"uuid":"269627881","full_name":"tgotwig/vidmerger","owner":"tgotwig","description":"📼 Merge video \u0026 audio files via CLI","archived":false,"fork":false,"pushed_at":"2025-03-16T09:09:08.000Z","size":6645,"stargazers_count":138,"open_issues_count":17,"forks_count":11,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T03:04:56.852Z","etag":null,"topics":["ffmpeg","rust","rust-lang","video","video-concat","video-concatenation","video-merge","video-merger","wrapper"],"latest_commit_sha":null,"homepage":"https://tgotwig.github.io/vidmerger","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tgotwig.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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":"2020-06-05T12:25:50.000Z","updated_at":"2025-03-16T09:09:11.000Z","dependencies_parsed_at":"2023-02-14T08:17:08.473Z","dependency_job_id":"10501716-77d1-4cdf-b26e-96043f7d1ae8","html_url":"https://github.com/tgotwig/vidmerger","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgotwig%2Fvidmerger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgotwig%2Fvidmerger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgotwig%2Fvidmerger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgotwig%2Fvidmerger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tgotwig","download_url":"https://codeload.github.com/tgotwig/vidmerger/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247284949,"owners_count":20913704,"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":["ffmpeg","rust","rust-lang","video","video-concat","video-concatenation","video-merge","video-merger","wrapper"],"created_at":"2024-08-01T15:05:59.918Z","updated_at":"2025-04-05T04:09:42.442Z","avatar_url":"https://github.com/tgotwig.png","language":"Rust","funding_links":[],"categories":["Applications","Rust","HarmonyOS"],"sub_categories":["Video","Windows Manager"],"readme":"\u003c!-- https://github.com/elsewhencode/project-guidelines/blob/master/README.sample.md --\u003e\n\n\u003cp align=\"center\"\u003e\u003ca\u003e\u003cimg src=\"img/merge.gif\" alt=\"img/merge.gif\"/\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eVidmerger\u003c/h1\u003e\n\u003cp align=\"center\"\u003eA wrapper around FFmpeg which simplifies merging of multiple videos.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"img/demo.svg\" alt=\"fusion gif\"/\u003e\u003c/p\u003e\n\n```mermaid\n%%{init: {'themeVariables': { 'mainBkg': 'white', 'nodeBorder': 'black' }}}%%\ngraph LR;\nVideo_A--\u003eVidmerger;\nVideo_B--\u003eVidmerger;\nVidmerger--\u003eFPS_Changer;\nFPS_Changer--\u003eMerger;\nMerger--\u003eChapterer;\nChapterer--\u003eVideo_A+B;\n\nVidmerger--\u003eMerger;\nMerger--\u003eVideo_A+B;\n```\n\n| Feature     | Description                                                                                                                                                                                                                                     |\n| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Selector    | Iterates through [this list of file endings](src/main.rs#L34), selects all files which matches with the current file ending except ones which start with a dot. The list can be overwritten by `--format` or `-f`, example: `--format mp4,mkv`. |\n| FPS_Changer | After detecting not matching fps values, it scales all the higher fps videos down to the lowest detecting fps value. Can be skipped by `--skip-fps-changer`. The desired fps value can be set by `--fps`, example: `--fps 23.976`.              |\n| Chapterer   | After the merge job is done, it creates the same file but with chapters in it, the title is all in between the first dash till the file extension, example: `Video_A - Chapter 1.mp4`. Can be skipped by `--skip-chapterer`.                    |\n\n## 🙉 What is this exactly?\n\nVidmerger is a command-line-tool which uses **ffmpeg** to merge multiple video-files with the same file-extension into one file, for example running `vidmerger .` on mp4 files would create a merged video called `output.mp4` 🐣\n\nHere is the usage help of vidmerger 🤗\n\n```shell\nA wrapper around ffmpeg which simlifies merging multiple videos 🎞  Everything in between the first\n`-` till the fill extension of the input files will be used as chapter titles.\n\nUSAGE:\n    vidmerger [OPTIONS] \u003cTARGET_DIR\u003e\n\nARGS:\n    \u003cTARGET_DIR\u003e    Sets the input file to use\n\nOPTIONS:\n    -f, --format \u003cformat\u003e     Specifies which formats should be merged individually, the default is\n                              👉 3g2,3gp,aac,ac3,alac,amr,ape,au,avi,awb,dts,f4a,f4b,f4p,f4v,flac,flv,m4a,m4b,m4p,m4r,m4v,mkv,mov,mp2,mp3,mp4,mpeg,mpg,oga,ogg,ogm,ogv,ogx,opus,pcm,spx,wav,webm,wma,wmv\n        --fps \u003cfps\u003e           Generates videos inside a temporary folder with this fps value and\n                              merges them\n    -h, --help                Print help information\n        --shutdown            For doing a shutdown at the end (needs sudo)\n        --skip-chapterer      Skips the chapterer\n        --skip-fps-changer    Skips the fps changer\n    -V, --version             Print version information\n```\n\n## ✨ Installing / Getting started\n\nYou can install it on all the three major operating systems 🤗\n\n### X64\n\n| Platform  | Packager                                                                                   | Command                                                                                                                                                                                          |\n| :-------- | :----------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| 🍎 MacOS   | 🍺 [Homwbrew](https://github.com/TGotwig/homebrew-vidmerger/blob/master/vidmerger.rb)       | brew tap tgotwig/vidmerger\u003cbr\u003ebrew install vidmerger                                                                                                                                             |\n| 🐧 Linux   | 🍺 [Homwbrew](https://github.com/TGotwig/homebrew-linux-vidmerger/blob/master/vidmerger.rb) | brew tap tgotwig/linux-vidmerger\u003cbr\u003ebrew install vidmerger                                                                                                                                       |\n| 🐧 Linux   | 🍺 CURL                                                                                     | sudo curl -L https://github.com/TGotwig/vidmerger/releases/latest/download/vidmerger-linux.tar.gz -o /tmp/vidmerger-linux.tar.gz \u0026\u0026 sudo tar -xzvf /tmp/vidmerger-linux.tar.gz -C /usr/local/bin |\n| 🏳️‍🌈 Windows | 🍫 [Chocolatey](https://community.chocolatey.org/packages/vidmerger)                        | choco install ffmpeg # prerequisite\u003cbr\u003echoco install vidmerger                                                                                                                                   |\n\n### ARM64\n\n| Platform | Packager                                                                             | Command                                                                                                                                                                                                           |\n| :------- | :----------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| 🍎 MacOS  | 🍺 [Homwbrew](https://github.com/TGotwig/homebrew-vidmerger/blob/master/vidmerger.rb) | brew tap tgotwig/vidmerger\u003cbr\u003ebrew install vidmerger                                                                                                                                                              |\n| 🐧 Linux  | 🍺 CURL                                                                               | sudo curl -L https://github.com/tgotwig/vidmerger/releases/download/0.3.2/vidmerger-linux-arm64.tar.gz -o /tmp/vidmerger-linux-arm64.tar.gz \u0026\u0026 sudo tar -xzvf /tmp/vidmerger-linux-arm64.tar.gz -C /usr/local/bin |\n\n## 🐳 Run it without installing\n\nYou can also use Docker to run vidmerger without installing anything except Docker, hosted on [Dockerhub](https://hub.docker.com/r/tgotwig/vidmerger).\n\n```bash\ndocker container run -v \u003cPATH-TO-YOUR-VIDEOS\u003e:/data tgotwig/vidmerger\n```\n\nExamples with Bash:\n\n```bash\ndocker container run -v ./data:/data tgotwig/vidmerger\ndocker container run -v ./data:/data tgotwig/vidmerger --version\n```\n\n## ⚙️ Developing\n\n### Built With\n\nRust and some listed Crates inside of [Cargo.toml](Cargo.toml) under _dependencies_.\n\n### Prerequisites\n\n- [Rust 2021](https://www.rust-lang.org/tools/install)\n- [yt-dlp](https://github.com/yt-dlp/yt-dlp/wiki/Installation)\n- [ffmpeg](https://ffmpeg.org/download.html)\n- [task](https://taskfile.dev/#/installation)\n\n### Setting up Dev\n\nOnce you are done with installing the prerequisites, run `task`:\n\n```shell\ngit clone git@github.com:TGotwig/vidmerger.git\ncd vidmerger\ntask\n```\n\nIf you see anything to improve, just create an [issue](https://github.com/tgotwig/vidmerger/issues) or directly open a [pull request](https://github.com/tgotwig/vidmerger/pulls) 🤗✨\n\n### Building\n\nRun `task build` to build for Mac, Linux and Windows. You can find the compressed Mac \u0026 Linux .tar.gz-archives for Github under _target/tars_, the .exe file for Windows under _tools_.\n\n### Deploying / Publishing\n\n#### Automated steps\n\n- Homebrew (MacOS \u0026 Linux): Gets automatically deployed by [release.yml](https://github.com/TGotwig/vidmerger/blob/master/.github/workflows/release.yml) after pushing a git tag.\n- Chocolatey (Windows): Gets automatically deployed by [release.yml](https://github.com/TGotwig/vidmerger/blob/master/.github/workflows/release.yml) after pushing a git tag.\n\n#### Manual steps\n\nIncreasing all versions by _find and replace_, then after `task build`:\n\n- Dockerhub: Run `task publish_dockerhub`.\n\n## 📦 Versioning\n\nWe use [SemVer](http://semver.org/) for versioning.\n\n## 🧪 Tests\n\n- For major tests: `task test` (requires `yt-dlp` and `ffmpeg` to be installed)\n- For linting tests: `task lint`\n\n## 🌟 Style guide\n\n- [rust-clippy](rust-clippy)\n- [rls-vscode](https://github.com/rust-lang/rls-vscode)\n- [conventionalcommits](https://www.conventionalcommits.org/en/v1.0.0)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftgotwig%2Fvidmerger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftgotwig%2Fvidmerger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftgotwig%2Fvidmerger/lists"}