/other_video_transcoding

Other tools to transcode videos.

Primary LanguageRubyMIT LicenseMIT

Other Video Transcoding

Other tools to transcode videos.

About

Hi, I'm Don Melton. I created these tools to transcode my collection of Blu-ray Discs and DVDs into a smaller, more portable format while remaining high enough quality to be mistaken for the originals.

Unlike my older Video Transcoding project, the other-transcode tool in this package automatically selects a platform-specific hardware video encoder rather than relying on a slower software encoder.

Using an encoder built into a CPU or video card means that even Blu-ray Disc-sized media can be transcoded 5 to 10 times faster than its original playback speed, depending on which hardware is available.

But even at those speeds, quality is never compromised because the other-transcode tool also selects the best ratecontrol system available within those encoders and properly configures that system. This is what sets it apart from other tools using hardware encoders.

Because the other-transcode tool leverages FFmpeg, many hardware platforms are supported including:

And many features are supported including:

  • High quality 10-bit HEVC encoding on recent generations of Nvidia and Intel hardware
  • 8-bit HEVC encoding on other hardware platforms
  • Hardware-based video decoding for improved performance
  • Fallback to software video encoding when appropriate hardware is not available
  • Optional automatic and reliable video cropping
  • Adding audio and subtitle tracks by language or title
  • Dolby Digital Plus (Enhanced AC-3) audio encoding
  • Burning image-based subtitles into video output to ease player compatibility

Also included in this package is ask-ffmpeg-log which reports temporal information from FFmpeg-generated .log files containing encoding statistics.

Additional documentation for this project is available in the wiki.

Installation

Avoid installing within virtual machines such as the Windows Subsystem for Linux since access to hardware video encoders may not be allowed, severely impacting performance.

These tools work on Windows, Linux and macOS. They're packaged as a Gem and require Ruby. See "Installing Ruby" if you don't have it on your platform.

Use this command to install the package:

gem install other_video_transcoding

And this command to update it:

gem update other_video_transcoding

The commands to install and update may need prefixing with sudo on some platforms.

The other-transcode tool in this package requires other software to function properly, specifically these command line programs:

  • ffprobe
  • ffmpeg
  • mkvpropedit

Optional crop previewing also requires the mpv command line program.

See "Download FFmpeg," "MKVToolNix Downloads" and "mpv Installation" to find versions for your platform.

Additional documentation for installing these programs on Windows is available in the wiki.

Docker containers for Linux, including installation instructions, are available here:

https://github.com/ttyS0/docker-other-transcode

On macOS, all of these programs can be easily installed via Homebrew, an optional package manager:

brew install ffmpeg
brew install mkvtoolnix
brew install mpv

The ffprobe program is included within the ffmpeg package and the mkvpropedit program is included within the mkvtoolnix package.

Usage

Each tool in this package has several command line options. The other-transcode tool is the most complex with over 50 of its own. Use --help to list the options available for a specific tool, along with brief instructions on their usage:

other-transcode --help

More options for the other-transcode tool are available with:

other-transcode --help more

And the full set of options is available with:

other-transcode --help full

The other-transcode tool automatically determines target video bitrate, main audio track configuration, etc. without any command line options, so using it can be as simple as this on Windows:

other-transcode C:\Rips\Movie.mkv

Or this on Linux and macOS:

other-transcode /Rips/Movie.mkv

On completion that command creates two files in the current working directory:

Movie.mkv
Movie.mkv.log

The .log file can be used as input to the ask-ffmpeg-log tool.

Use the --hevc option to create HEVC video:

other-transcode --hevc C:\Rips\Movie.mkv

High quality 10-bit HEVC is automatically selected when using the Nvidia and Intel encoders.

Use the --eac3 option to create Dolby Digital Plus audio:

other-transcode --eac3 C:\Rips\Movie.mkv

Feedback

Please report bugs or ask questions by creating a new issue on GitHub. I always try to respond quickly but sometimes it may take as long as 24 hours.

Acknowledgements

This project would not be possible without my collaborators on the Video Transcoding Slack who spend countless hours reviewing, testing, documenting and supporting this software.

License

Other Video Transcoding is copyright Don Melton and available under a MIT license.