generated from me/template-mit
Add a super compression function based on what YTS/YIFY may be doing.
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user