diff --git a/README.md b/README.md new file mode 100644 index 0000000..64907eb --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# burnSubs +You found my burnSubs tool. The goal for this tool is to ease the +conversion of arbitrary video files with soft-subtitles in the SSA/ASS +Substation Alpha format into simple stereo hard-subtitled video files. + +## Features +* softsub to hardsub conversion +* embedded font files +* selecting specific audio streams +* selecting specific video streams +* automatic selection of language preferences +* default surround sound to stereo down-mixing + * opt out CLI flag available +* anti-clobbering default behavior +* auto-cleanup on error + +## Prerequisite Tools +Firstly, the tool will yell at you if the tools it needs don't exist. +Feel free to just run the tool, and it will let you know what you're +missing. + +* [`ffmpeg`](https://ffmpeg.org/) - the one and only + * `ffprobe` - usually comes with ffmpeg +* [`jq`](https://stedolan.github.io/jq/) - file/pipe based JSON processor + + +## How does it work? +`burnSubs` takes an input video file and tries to figure out what +audio streams and subtitle streams exist within the file. It stores +metadata in `/tmp` while it runs. When running it will pull the +streams within the input file, and try to select Japanese language +audio streams, and a non-signs subtitle stream (i.e. a full language +subtitle stream) to add to the output video. + +Before transcoding it will then extract the subtitle file to pass into +`ffmpeg`'s subtitle burn in filter, and will try to down-mix any +surround sound input streams to stereo. Downmixing, track selection, +clobbering behavior, and verbosity can all be controlled to a limited +extent by CLI flags. + +## Can you make it do *XYZ*. +Give me an enhancement request in github and I'll take a look. \ No newline at end of file diff --git a/burnSubs b/burnSubs index 7aee242..0feca62 100755 --- a/burnSubs +++ b/burnSubs @@ -5,7 +5,7 @@ set -o errexit ################################################################################ # burnSubs -# version 0.13.1 +# version 0.13.3 ################# # Wishlist: # queue encodes @@ -13,11 +13,9 @@ set -o errexit # finish help flag # audio recode flag # -# Changes -# automatically select JPN audio if more than one audio channel found. ################################################################################ -DEFAULTS_OPTS_CRF=20 +DEFAULTS_OPTS_CRF=18 function machineSetup() { # Default setup @@ -139,9 +137,9 @@ function setupBins() { setAndValidateBin "ffmpeg" "FFMPEG" setAndValidateBin "ffprobe" "FFPROBE" setAndValidateBin "jq" "JQ" - setAndValidateBin "python3" "PYTHON3" - setAndValidateBin "awk" "AWK" - setAndValidateBin "date" "DATE" + #setAndValidateBin "python3" "PYTHON3" + #setAndValidateBin "awk" "AWK" + #setAndValidateBin "date" "DATE" } # Used by the above function to evaluate overrides if they are set, and @@ -175,6 +173,7 @@ function doCleanup() { echo "=> Cleaning up." rm -r "$TMP" else + set +x echo "tmp dir: $TMP" fi @@ -314,7 +313,7 @@ function setupAudioTranscode() { if [[ "${OPTS_SURROUND_PRESERVE}" == false ]]; then # From https://superuser.com/questions/852400/properly-downmix-5-1-to-stereo-using-ffmpeg # Nightmode Formula - FILT_AUDIO="-filter:a pan=stereo|FL rejecting ${REJECT_SUB}" done @@ -736,6 +735,11 @@ elif [[ ${OPTS_VERBOSITY} -eq 1 ]]; then else # ie [[ ${OPTS_VERBOSITY} -ge 2 ]]; then FF_VERBOSITY="-hide_banner" fi + +if [[ "$OPTS_DEBUG" == "true" ]]; then + set -x +fi + ############### # Configure the encoder based upon the hostname machineSetup