Conv2mp4 Versions Save

This Powershell script will recursively search through a user-defined file path and convert all videos of user-specified file types to MP4 with H264 video and AAC audio using ffmpeg. The purpose of this script is to reduce transcoding CPU load on a media server like Plex or Emby and increase video compatibility across platforms.

v5.1.0

2 years ago

Enhancements

  • webUI is now responsive, and readable on large or small screens
    • Added current configuration section
  • Added ability to check for updates
    • Will unobtrusively notify in both the log output and the webUI
    • Notifications can be disabled in configuration (see new config template in files/cfg/config.yaml)

Bug fixes

  • Fixed a bug where apostrophes and certain grave accents were being interpreted as single quotes, causing files whose names contained those characters to be reported as corrupt

v5.0.0

2 years ago
  • New features in v5.0.0:
    • Docker container
    • WebUI for monitoring
    • Schedule script executions with cron syntax
    • Persistent usage statistics (over time)
    • Split logging for easier readability
    • Log rotation
    • Bug fixes

v4.2.0

3 years ago
  • Improved metadata parsing
  • Bug fixes
    • Closes #67
    • Closes #68
    • Closes #70

v4.1.2

4 years ago
  • Fixed minor issue where failover threhold percentage was not being dynamically generated, leading to possibly incorrect messaging in the console and log.

v4.1.1

4 years ago

Fixed out_path inconsistencies

  • Closes #58
  • Using out_path now preserves media_path directory structure in the out_path.
  • Using out_path will now delete empty directories in the media_path, but will not delete the media_path itself (this avoids leaving behind a bunch of empty directories for files that were successfully converted and moved to out_path). This will leave directories containing failed conversions or corrupt files untouched in media_path for manual troubleshooting.
  • The out_path directory is now validated in the pre-flight script, with proper error logging.

v4.1

4 years ago
  • Fixed bug with forced stereo audio track cloning (#54)
  • Improved metadata title parsing
  • Plex library no longer refreshes on "compliant mp4" condition, should save some CPU cycles
  • Moov atom now always moved to the beginning of the file for quicker streaming (more info can be found @ https://www.adobe.com/devnet/video/articles/mp4_movie_atom.html for the curious)
  • Fixed progress bar counter during interactive file discovery process
  • Various minor code improvements

v4.0

4 years ago

Release v4.0

Release v4.0 is a major code overhaul that introduces the following new features and improvements:

New features

  • Ignore list: shortens time required to find new files on script execution by excluding files the script has already successfully processed
  • Clone audio to stereo track: Addresses #42 - when enabled, will create a stereo copy of any non-stereo audio tracks for each file for playback on stereo systems (while retaining the original audio track)
  • Metadata title: Sets the file's metadata title to the filename (helps with Plex matching) [thanks to @djgrijalva]
  • User-defined failover threshold: User can now define the failover threshold to any desired percentage (Addresses #38)
  • Failed encoding reporting: List files that failed to encode (even after failover) in the log
  • Corrupt file reporting: List corrupt files in the log (files with either corrupt video or audio codecs)

Improvements

  • Configuration: Configuration is now set by the user in a plain text file
  • Code enhancement: Code is now modular, increasing readability and ease of adding new features
  • Portability: Pulling the latest version of the code will not overwrite or otherwise change any user settings in the config file
  • Validation: All user-defined settings in the config file are validated prior to the script executing. Any errors will cause the script to log a relevant message and exit.
  • Timekeeping: Fixed various issues with timekeeping in the script, resulting in more accurate statistics
  • Best practices: Various changes to conform to Powershell best practices

v3.1.2

6 years ago
  • New method of calculating per-encode and cumulative disk usage change
  • Calculated values are more accurate now - using a 1024 base instead of 1000
  • Closes issue #27
  • Removed unnecessary whitespace

v3.1

6 years ago
  • Addressed Issue #19 : Added a toggle for Plex features so it can be turned on or off (by setting $usePlex to $True or $False in the cfg file)
  • Addressed Issue #22 : Special characters in file names are ignored and working properly now
  • Added a description for each ffmpeg and HandbrakeCLI argument within the script. Hopefully this will make it easier for those wishing to customize encoding parameters.
  • Since an option was added to the cfg file, make sure you don't delete the new $usePlex variable if you copy your old settings over. Using a text diff/merge tool (like WinMerge) is recommended.

v3.0

6 years ago
  • Feature: Script and configuration are now separate. This allows for script updating without having to re-input configuration settings.
  • Feature: New option to enable/disable keeping subtitles. (addressed issue #13)
  • Feature: New option to allow for a separate output path. (feature request from reddit).
  • Behavior: Script now explicitly deletes MKVs when an identical MP4 (same filename) already exists. This cuts down on script run-time when duplicate files exist.
  • Behavior: When run manually, script gives live update of how many files have been found. This serves to let the user know the script is functioning properly when run against large libraries, where file discovery can take a while.