media-tools/to_vp9/to_vp9.sh

79 lines
2.6 KiB
Bash
Raw Normal View History

2023-07-25 00:52:25 +02:00
#!/bin/bash
# set shopt-options used by this shell-script
# Note, 0 (true) from shopt -q is "false" in a math context.
shopt -q globstar; globstar_set=$?
((globstar_set)) && shopt -s globstar
shopt -q extglob; extglob_set=$?
((extglob_set)) && shopt -s extglob
# return default shopt-options
function finish {
((globstar_set)) && shopt -u globstar
((extglob_set)) && shopt -u extglob
}
trap finish EXIT
print_help() {
printf "Help: not implemented yet"
}
while getopts 'e:dh' flag; do
case "${flag}" in
e) extension+=("$OPTARG");;
d) delete=true;;
h) print_help
exit 0;;
*) exit 1 ;;
esac
done
# Print available encoders
readarray -t encoders <<<$(ffmpeg -encoders -hide_banner|grep vp9)
echo "In FFMPEG verfügbare Encoder:"
for i in "${!encoders[@]}"; do
echo "$i: ${encoders[i]}"
#encoders[i]=$(echo ${encoders[0]} | awk '{print $2}')
done
# Choose an encoder
while :; do
read -p "Choose an encoder [0]: " encoder
[[ $encoder =~ ^[0-9]+$ ]] || { echo "Enter a valid number"; continue; }
if ((encoder >= 0 && encoder < ${#encoders[@]})); then
encoder=$(echo ${encoders[$encoder]} | awk '{print $2}')
break
else
2023-07-25 15:03:31 +02:00
echo "Not a valid encoder, try again"
2023-07-25 00:52:25 +02:00
fi
done
2023-07-25 15:03:31 +02:00
# Choose an GPU, if encoder is GPU accelerated
2023-07-25 00:52:25 +02:00
# write array into string
extension="${extension[*]}"
# change separator
extension=${extension// /|}
for file in **/*.@($extension); do
echo $encoder
2023-07-25 15:03:31 +02:00
#https://wiki.archlinux.org/title/Hardware_video_acceleration
#VP9_vaapi
#Hardware video acceleration enabled
#https://ffmpeg.org/ffmpeg-all.html#VAAPI-encoders
#https://trac.ffmpeg.org/wiki/Hardware/VAAPI
#ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD129 -i "$file" -map 0 -c copy -c:v vp9_vaapi -rc_mode CQP -look_ahead 1 -bf 2 -bsf:v vp9_raw_reorder,vp9_superframe -compression_level 0 -vf 'hwupload' Der\ VornameCqpLA.mkv
#VP9_qsv
#--enable-libmfx or --enable-libvpl and Hardware video acceleration enabled
#libvpl vs. libmfx: https://www.intel.com/content/www/us/en/developer/articles/technical/onevpl-in-ffmpeg-for-great-streaming-on-intel-gpus.html
#https://ffmpeg.org/ffmpeg-codecs.html
#https://trac.ffmpeg.org/wiki/Hardware/QuickSync
#https://www.intel.com/content/www/us/en/developer/articles/technical/common-bitrate-control-methods-in-intel-media-sdk.html
#https://www.intel.com/content/www/us/en/developer/articles/technical/advanced-bitrate-control-methods-in-intel-media-sdk.html
#ffmpeg -hwaccel qsv -qsv_device /dev/dri/renderD129 -i "$file" -c:v av1_qsv -vf 'hwupload' output.mkv
2023-07-25 00:52:25 +02:00
done