From 2564be90a4a718a01d86f85dd3acfa75cb08213a Mon Sep 17 00:00:00 2001 From: Hyperling Date: Mon, 13 Jul 2026 15:10:06 -0700 Subject: [PATCH] Add a super compression function based on what YTS/YIFY may be doing. --- rc_shared.sh | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/rc_shared.sh b/rc_shared.sh index a1c59d0..98e6034 100644 --- a/rc_shared.sh +++ b/rc_shared.sh @@ -545,6 +545,7 @@ alias set-pv-progress='set-var PV_PROGRESS "y" ' alias set-pv-verbose='set-var PV_VERBOSE "y" ' alias set-pv-2pass='set-var PV_2PASS "y" ' alias set-pv-v2='set-var PV_V2 "y" ' +alias set-pv-v2='set-var PV_YIFY "y" ' alias set-pv-vert='set-pv-vertical ' alias set-pv2='set-pv-v2; set-pv-2pass; set-pv-progress ' @@ -557,6 +558,75 @@ alias pvs2='pv2s ' alias qpv2='set-pv2; qpv ' +# 20260713 - Attempt at compressing videos as well as done for torrented movies. +function pv-yify { + # ffmpeg -i input.mkv -c:v libx264 -crf 27 -x264-params cabac=1:ref=5:analyse=0x133:me=umh:subme=9:chroma-me=1:deadzone-inter=21:deadzone-intra=11:b-adapt=2:rc-lookahead=60:vbv-maxrate=10000:vbv-bufsize=10000:qpmax=69:bframes=5:direct=auto:crf-max=51:weightp=2:merange=24:chroma-qp-offset=-1:sync-lookahead=2:psy-rd=1.00,0.15:trellis=2:min-keyint=23:partitions=all -c:a aac -ar 44100 -b:a 128k -map 0 output.mp4 + input="$1" + output="$2" + ratio="$3" + audio="$4" + + if [[ -z "$input" ]]; then + cat <<- EOF + Usage: pv-yify INPUT_FILE [OUTPUT_FILE] [ASPECT_RATIO] + + Examples: + + - Create file raw.mp4.pv-yify.mp4 without changing aspect ratio: + $ pv-yify raw.mp4 + + - Compress a video and ensures it is 720p: + $ pv-yify raw.mp4 compressed.mp4 1280:720 + + - Compress a video ensuring that it is 720 pixels tall: + $ pv-yify raw.mp4 vertical.mp4 720:-1 + EOF + fi + + if [[ -z "$output" ]]; then + output="$input.pv-yify.mp4" + fi + + echo -e "\n`date` - Converting '$input' with YIFY-like compression to '$output'." + + if [[ -f "$output" ]]; then + echo -e "\n`date` - Moving '$output' to TRASH." + mv -v "$output" ~/TRASH/ + fi + + if [[ -n "$ratio" ]]; then + if [[ "$ratio" != *":"* ]]; then + echo "ERROR: Optional ratio parameter needs to be like '-1:720' (horizontal) or '720:-1' (vertical)". + return 1 + fi + size="-filter:v scale=$ratio" + fi + + if [[ -z "$audio" ]]; then + audio="128k" + fi + + echo -e "\n`date` - Starting FFMPEG...\n" + set -x + ffmpeg -i "$input" \ + -hide_banner -loglevel level+warning \ + -c:v libx264 -crf 27 -c:a aac -ar 44100 -b:a "$audio" -map 0 \ + -x264-params cabac=1:ref=5:analyse=0x133:me=umh:subme=9:chroma-me=1:deadzone-inter=21:deadzone-intra=11:b-adapt=2:rc-lookahead=60:vbv-maxrate=10000:vbv-bufsize=10000:qpmax=69:bframes=5:direct=auto:crf-max=51:weightp=2:merange=24:chroma-qp-offset=-1:sync-lookahead=2:psy-rd=1.00,0.15:trellis=2:min-keyint=23:partitions=all \ + $ratio \ + "$output" + set +x + echo -e "\n`date` - Finished FFMPEG." + + echo -e "\n`date` - Syncing and checking file sizes." + sync + sleep 5 + ls -lh "$input" "$output" + + echo -e "\n`date` - Done!" +} +alias yify="pv-yify " +alias yify-pv="pv-yify " + function set-pv-all { #set-var PV_VERTICAL_ASPECT_RATIO "y" set-var PV_V2 "y"