vidmerger
vidmerger copied to clipboard
πΌ Merge video & audio files via CLI
Vidmerger
A wrapper around FFmpeg which simplifies merging of multiple videos.
%%{init: {'themeVariables': { 'mainBkg': 'white', 'nodeBorder': 'black' }}}%%
graph LR;
Video_A-->Vidmerger;
Video_B-->Vidmerger;
Vidmerger-->FPS_Changer;
FPS_Changer-->Merger;
Merger-->Chapterer;
Chapterer-->Video_A+B;
Vidmerger-->Merger;
Merger-->Video_A+B;
Feature | Description |
---|---|
Selecter | Iterates through this list of file endings, 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 . |
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 . |
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 . |
π What is this exactly?
Vidmerger 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
π£
Here is the usage help of vidmerger π€
A wrapper around ffmpeg which simlifies merging multiple videos π Everything in between the first
`-` till the fill extension of the input files will be used as chapter titles.
USAGE:
vidmerger [OPTIONS] <TARGET_DIR>
ARGS:
<TARGET_DIR> Sets the input file to use
OPTIONS:
-f, --format <format> Specifies which formats should be merged individually, the default is
π 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
--fps <fps> Generates videos inside a temporary folder with this fps value and
merges them
-h, --help Print help information
--shutdown For doing a shutdown at the end (needs sudo)
--skip-chapterer Skips the chapterer
--skip-fps-changer Skips the fps changer
--skip-wait Skips the wait time for reading
-V, --version Print version information```
β¨ Installing / Getting started
You can install it on all the three major operating systems π€
X64
Platform | Packager | Command |
---|---|---|
π MacOS | πΊ Homwbrew | brew tap tgotwig/vidmerger brew install vidmerger |
π§ Linux | πΊ Homwbrew | brew tap tgotwig/linux-vidmerger brew install vidmerger |
π§ Linux | πΊ CURL | sudo curl -L https://github.com/TGotwig/vidmerger/releases/latest/download/vidmerger-linux.tar.gz -o /tmp/vidmerger-linux.tar.gz && sudo tar -xzvf /tmp/vidmerger-linux.tar.gz -C /usr/local/bin |
π³οΈβπ Windows | π« Chocolatey | choco install ffmpeg # prerequisite choco install vidmerger |
ARM64
Platform | Packager | Command |
---|---|---|
π MacOS | πΊ Homwbrew | brew tap tgotwig/vidmerger brew install vidmerger |
π§ 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 && sudo tar -xzvf /tmp/vidmerger-linux-arm64.tar.gz -C /usr/local/bin |
π³ Run it without installing
You can also use Docker to run vidmerger without installing anything except Docker, hosted on Dockerhub.
docker container run -v <PATH-TO-YOUR-VIDEOS>:/data tgotwig/vidmerger
Examples with Bash:
docker container run -v ./data:/data tgotwig/vidmerger
docker container run -v ./data:/data tgotwig/vidmerger --version
βοΈ Developing
Built With
Rust and some listed Crates inside of Cargo.toml under dependencies.
Prerequisites
Setting up Dev
Once you are done with installing the prerequisites, you should run task
to see if everything runs smooth:
git clone [email protected]:TGotwig/vidmerger.git
cd vidmerger
task
Also click on fork from the top right corner of this repository and run:
git remote add <your-github-name> [email protected]:<your-github-name>/vidmerger.git
Here is a little tutorial about working with forks along with GitKraken π
Building
Run task build
to build for Mac, Linux and Windows. You can find the compressed Mac & Linux .tar.gz-archives for Github under target/tars, the .exe file for Windows under tools.
Deploying / Publishing
Automated steps
- Homebrew (MacOS & Linux): Gets automatically deployed by release.yml after pushing a git tag.
- Chocolatey (Windows): Gets automatically deployed by release.yml after pushing a git tag.
Manual steps
Increasing all versions by find and replace, then after task build
:
- Dockerhub: Run
task publish_dockerhub
.
π¦ Versioning
We use SemVer for versioning.
π§ͺ Tests
- For major tests:
task test
(requiresyt-dlp
andffmpeg
to be installed) - For linting tests:
task lint
π Style guide
- rust-clippy
- rls-vscode
- conventionalcommits
π Licensing
MIT License with βCommons Clauseβ.