Skip to content

lisamelton/other_video_transcoding

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Other Video Transcoding

Other tools to transcode videos.

About

Hi, I'm Lisa Melton. I created this project 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.rb 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.rb 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 other-transcode.rb 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

Additional documentation for this project is available in the wiki.

Installation

Warning

Older versions of this project were packaged via RubyGems and installed via the gem command. If you had it installed that way, it's a good idea to uninstall that version via this command: gem uninstall other_video_transcoding

Warning

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.

The other-transcode.rb tool works on Windows, Linux and macOS. It's a standalone Ruby script which must be installed and updated manually. You can retrieve it via the command line by cloning the entire repository like this:

git clone https://github.com/lisamelton/other_video_transcoding.git

Or download it directly from the GitHub website here:

https://github.com/lisamelton/other_video_transcoding

On Linux and macOS, make sure other-transcode.rb is executable by setting its permissions like this:

chmod +x other-transcode.rb

And then move or copy other-transcode.rb to a directory listed in your $env:PATH environment variable on Windows or $PATH environment variable on Linux and macOS.

Because it's written in Ruby, other-transcode.rb requires that language's runtime and interpreter. See "Installing Ruby" if you don't have it on your platform.

Additional software is required for other-transcode.rb 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://git.skj.dev/container/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

Warning

Recent changes to Nvidia drivers, versions 555.85 and later, have a bug (or feature?) which ignores target bitrates for HEVC output so that only constant quality values are honored. H.264 output is not affected. Until this is fixed, always add the --nvenc-cq option to your command line when using the Nvidia HEVC encoder. Otherwise the encoder will ignore the default bitrate and do something undefined.

The other-transcode.rb tool has over 50 command line options. Use --help to list the options available along with brief instructions on their usage:

other-transcode.rb --help

More options are available with:

other-transcode.rb --help more

And the full set of options is available with:

other-transcode.rb --help full

The other-transcode.rb 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.rb C:\Rips\Movie.mkv

Or this on Linux and macOS:

other-transcode.rb /Rips/Movie.mkv

On completion that command creates its output in the current working directory:

Movie.mkv

Use the --hevc option to create HEVC video:

other-transcode.rb --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.rb --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 Lisa Melton and available under a MIT license.