From 9245caeb4c55147048b23db6d3b01975e77b0196 Mon Sep 17 00:00:00 2001 From: Stu Leak Date: Tue, 9 Dec 2025 00:57:48 -0500 Subject: [PATCH] Add VT helper scripts for 4K/1440p 60fps and smoothing --- scripts/bat/convert-av1-4k60-vt.bat | 30 +++++++++++++++++++++++++ scripts/bat/convert-hevc-1440p60-vt.bat | 30 +++++++++++++++++++++++++ scripts/bat/convert-hevc-4k60-vt.bat | 30 +++++++++++++++++++++++++ scripts/bat/smooth-60fps-vt.bat | 30 +++++++++++++++++++++++++ scripts/convert-av1-4k60-vt.sh | 22 ++++++++++++++++++ scripts/convert-hevc-1440p60-vt.sh | 22 ++++++++++++++++++ scripts/convert-hevc-4k60-vt.sh | 22 ++++++++++++++++++ scripts/smooth-60fps-vt.sh | 22 ++++++++++++++++++ 8 files changed, 208 insertions(+) create mode 100644 scripts/bat/convert-av1-4k60-vt.bat create mode 100644 scripts/bat/convert-hevc-1440p60-vt.bat create mode 100644 scripts/bat/convert-hevc-4k60-vt.bat create mode 100644 scripts/bat/smooth-60fps-vt.bat create mode 100755 scripts/convert-av1-4k60-vt.sh create mode 100755 scripts/convert-hevc-1440p60-vt.sh create mode 100755 scripts/convert-hevc-4k60-vt.sh create mode 100755 scripts/smooth-60fps-vt.sh diff --git a/scripts/bat/convert-av1-4k60-vt.bat b/scripts/bat/convert-av1-4k60-vt.bat new file mode 100644 index 0000000..2f56188 --- /dev/null +++ b/scripts/bat/convert-av1-4k60-vt.bat @@ -0,0 +1,30 @@ +@echo off +setlocal +REM VideoTools helper: AV1 4K @60fps upscale (balanced bitrate, keeps audio/subs/metadata) +REM Usage: convert-av1-4k60-vt.bat "input.ext" "output.mkv" + +if "%~1"=="" ( + echo Usage: %~nx0 "input.ext" "output.mkv" + exit /b 1 +) + +set INPUT=%~1 +set OUTPUT=%~2 +if "%OUTPUT%"=="" ( + set OUTPUT=%~dpn1-av1-4k60.mkv +) + +ffmpeg -y -hide_banner -loglevel error ^ + -i "%INPUT%" ^ + -map 0 ^ + -vf "scale=-2:2160,fps=60" ^ + -c:v libaom-av1 -b:v 5200k -cpu-used 4 -row-mt 1 -pix_fmt yuv420p ^ + -c:a copy -c:s copy -c:d copy ^ + "%OUTPUT%" + +if %ERRORLEVEL% equ 0 ( + echo Done: "%OUTPUT%" +) else ( + echo Encode failed. Check above ffmpeg output. +) +endlocal diff --git a/scripts/bat/convert-hevc-1440p60-vt.bat b/scripts/bat/convert-hevc-1440p60-vt.bat new file mode 100644 index 0000000..ee53c4d --- /dev/null +++ b/scripts/bat/convert-hevc-1440p60-vt.bat @@ -0,0 +1,30 @@ +@echo off +setlocal +REM VideoTools helper: HEVC 1440p @60fps upscale (balanced bitrate, keeps audio/subs/metadata) +REM Usage: convert-hevc-1440p60-vt.bat "input.ext" "output.mkv" + +if "%~1"=="" ( + echo Usage: %~nx0 "input.ext" "output.mkv" + exit /b 1 +) + +set INPUT=%~1 +set OUTPUT=%~2 +if "%OUTPUT%"=="" ( + set OUTPUT=%~dpn1-hevc-1440p60.mkv +) + +ffmpeg -y -hide_banner -loglevel error ^ + -i "%INPUT%" ^ + -map 0 ^ + -vf "scale=-2:1440,fps=60" ^ + -c:v libx265 -preset slow -b:v 4000k -pix_fmt yuv420p ^ + -c:a copy -c:s copy -c:d copy ^ + "%OUTPUT%" + +if %ERRORLEVEL% equ 0 ( + echo Done: "%OUTPUT%" +) else ( + echo Encode failed. Check above ffmpeg output. +) +endlocal diff --git a/scripts/bat/convert-hevc-4k60-vt.bat b/scripts/bat/convert-hevc-4k60-vt.bat new file mode 100644 index 0000000..c49c6bf --- /dev/null +++ b/scripts/bat/convert-hevc-4k60-vt.bat @@ -0,0 +1,30 @@ +@echo off +setlocal +REM VideoTools helper: HEVC 4K @60fps upscale (balanced bitrate, keeps audio/subs/metadata) +REM Usage: convert-hevc-4k60-vt.bat "input.ext" "output.mkv" + +if "%~1"=="" ( + echo Usage: %~nx0 "input.ext" "output.mkv" + exit /b 1 +) + +set INPUT=%~1 +set OUTPUT=%~2 +if "%OUTPUT%"=="" ( + set OUTPUT=%~dpn1-hevc-4k60.mkv +) + +ffmpeg -y -hide_banner -loglevel error ^ + -i "%INPUT%" ^ + -map 0 ^ + -vf "scale=-2:2160,fps=60" ^ + -c:v libx265 -preset slow -b:v 6000k -pix_fmt yuv420p ^ + -c:a copy -c:s copy -c:d copy ^ + "%OUTPUT%" + +if %ERRORLEVEL% equ 0 ( + echo Done: "%OUTPUT%" +) else ( + echo Encode failed. Check above ffmpeg output. +) +endlocal diff --git a/scripts/bat/smooth-60fps-vt.bat b/scripts/bat/smooth-60fps-vt.bat new file mode 100644 index 0000000..edcb744 --- /dev/null +++ b/scripts/bat/smooth-60fps-vt.bat @@ -0,0 +1,30 @@ +@echo off +setlocal +REM VideoTools helper: Motion smoothing to 60fps using minterpolate; keeps audio/subs/metadata +REM Usage: smooth-60fps-vt.bat "input.ext" "output.mkv" + +if "%~1"=="" ( + echo Usage: %~nx0 "input.ext" "output.mkv" + exit /b 1 +) + +set INPUT=%~1 +set OUTPUT=%~2 +if "%OUTPUT%"=="" ( + set OUTPUT=%~dpn1-smooth60.mkv +) + +ffmpeg -y -hide_banner -loglevel error ^ + -i "%INPUT%" ^ + -map 0 ^ + -vf "minterpolate=fps=60" ^ + -c:v libx265 -preset slow -b:v 3000k -pix_fmt yuv420p ^ + -c:a copy -c:s copy -c:d copy ^ + "%OUTPUT%" + +if %ERRORLEVEL% equ 0 ( + echo Done: "%OUTPUT%" +) else ( + echo Encode failed. Check above ffmpeg output. +) +endlocal diff --git a/scripts/convert-av1-4k60-vt.sh b/scripts/convert-av1-4k60-vt.sh new file mode 100755 index 0000000..e56ee24 --- /dev/null +++ b/scripts/convert-av1-4k60-vt.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# VideoTools helper: AV1 4K @60fps upscale (balanced bitrate, keeps audio/subs/metadata) +# Usage: ./convert-av1-4k60-vt.sh "input.ext" ["output.mkv"] +set -e + +if [ -z "$1" ]; then + echo "Usage: $0 input.ext [output.mkv]" + exit 1 +fi + +in="$1" +out="${2:-${1%.*}-av1-4k60.mkv}" + +ffmpeg -y -hide_banner -loglevel error \ + -i "$in" \ + -map 0 \ + -vf "scale=-2:2160,fps=60" \ + -c:v libaom-av1 -b:v 5200k -cpu-used 4 -row-mt 1 -pix_fmt yuv420p \ + -c:a copy -c:s copy -c:d copy \ + "$out" + +echo "Done: $out" diff --git a/scripts/convert-hevc-1440p60-vt.sh b/scripts/convert-hevc-1440p60-vt.sh new file mode 100755 index 0000000..3f3d26a --- /dev/null +++ b/scripts/convert-hevc-1440p60-vt.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# VideoTools helper: HEVC 1440p @60fps upscale (balanced bitrate, keeps audio/subs/metadata) +# Usage: ./convert-hevc-1440p60-vt.sh "input.ext" ["output.mkv"] +set -e + +if [ -z "$1" ]; then + echo "Usage: $0 input.ext [output.mkv]" + exit 1 +fi + +in="$1" +out="${2:-${1%.*}-hevc-1440p60.mkv}" + +ffmpeg -y -hide_banner -loglevel error \ + -i "$in" \ + -map 0 \ + -vf "scale=-2:1440,fps=60" \ + -c:v libx265 -preset slow -b:v 4000k -pix_fmt yuv420p \ + -c:a copy -c:s copy -c:d copy \ + "$out" + +echo "Done: $out" diff --git a/scripts/convert-hevc-4k60-vt.sh b/scripts/convert-hevc-4k60-vt.sh new file mode 100755 index 0000000..a25ea09 --- /dev/null +++ b/scripts/convert-hevc-4k60-vt.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# VideoTools helper: HEVC 4K @60fps upscale (balanced bitrate, keeps audio/subs/metadata) +# Usage: ./convert-hevc-4k60-vt.sh "input.ext" ["output.mkv"] +set -e + +if [ -z "$1" ]; then + echo "Usage: $0 input.ext [output.mkv]" + exit 1 +fi + +in="$1" +out="${2:-${1%.*}-hevc-4k60.mkv}" + +ffmpeg -y -hide_banner -loglevel error \ + -i "$in" \ + -map 0 \ + -vf "scale=-2:2160,fps=60" \ + -c:v libx265 -preset slow -b:v 6000k -pix_fmt yuv420p \ + -c:a copy -c:s copy -c:d copy \ + "$out" + +echo "Done: $out" diff --git a/scripts/smooth-60fps-vt.sh b/scripts/smooth-60fps-vt.sh new file mode 100755 index 0000000..261ce40 --- /dev/null +++ b/scripts/smooth-60fps-vt.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# VideoTools helper: Motion smoothing to 60fps using minterpolate; keeps audio/subs/metadata +# Usage: ./smooth-60fps-vt.sh "input.ext" ["output.mkv"] +set -e + +if [ -z "$1" ]; then + echo "Usage: $0 input.ext [output.mkv]" + exit 1 +fi + +in="$1" +out="${2:-${1%.*}-smooth60.mkv}" + +ffmpeg -y -hide_banner -loglevel error \ + -i "$in" \ + -map 0 \ + -vf "minterpolate=fps=60" \ + -c:v libx265 -preset slow -b:v 3000k -pix_fmt yuv420p \ + -c:a copy -c:s copy -c:d copy \ + "$out" + +echo "Done: $out"