Skip to content

Command-line interface for recursively transcoding videos and replacing them in place using ffmpeg to make them smaller

License

Notifications You must be signed in to change notification settings

Yeshey/RecursiveVideoTranscoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RecursiveVideoTranscoder

Command line interface for recursively transcoding videos and replacing them in place using ffmpeg to make them smaller, recoding thhem with the H265 codec.

The script finds all the following video extensions: .kvm .avi .mp4 .flv .ogg .mov .asf .mkv .wmv, and transcodes them to .mp4 in an efficient way with ffmpeg

Dependencies

Works in unix systems. Requiers curl and ffmpeg installed:

ubuntu: sudo apt-get update && sudo apt-get install ffmpeg && sudo apt-get install curl

arch: sudo pacman -Sy ffmpeg && sudo pacman -Sy curl

Usage

no installation required, in terminal cd to the desiered directory and run

bash <(curl -s https://raw.githubusercontent.com/Yeshey/RecursiveVideoTranscoder/main/RecursiveVideoTranscoder.sh)

CTRL + C to stop the script. Will stop the recoding of the current video and replace it with the old again.

Here is a clip showing the tool at 2 times speed:

2024-08-07.01-56-02_sped_up.mp4

It's good practice to run this command on the folder you're gonna use the script in:
find /path/to/directory \( -iname '*.kvm' -o -iname '*.avi' -o -iname '*.mp4' -o -iname '*.flv' -o -iname '*.mp4' -o -iname '*.webm' -o -iname '*.ogg' -o -iname '*.mov' -o -iname '*.asf' -o -iname '*.mkv' \) -type f -exec sh -c 'ffprobe "$1" >/dev/null 2>&1 || echo "$1"' _ {} \;
If there is any output, the script will error and halt on those videos, you should check if those videos are playable and if they are please file an issue.

Know Issues:

  • if the new file name it is converting to exists it will panic and might delete the existing file
  • Trips out and stops if there is a folder that ends in one of the extensions
  • Doesn't have option to diminuish bit-rate or resolution.
  • Some players might have trouble with the way it's encoded.
  • It's a very time and CPU consuming process - This is down to ffmpeg.

Updates log:

newest

  • Added option to alter resolution too now, and it won''t allow videos to increase resolution or fps
  • Videos don't loose audio and subtitle tracks and chapters anymore.
  • Handled "not enough space left on device" exception when running mv to /tmp to delete old file instead
  • Solution found to run script with curl whilst being able to read user input with read
  • Fixed CTRL + C halting justs ffmpeg and not whole script, and handling exit appropriately

oldest

About

Command-line interface for recursively transcoding videos and replacing them in place using ffmpeg to make them smaller

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages