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
|
2023-07-25 15:28:00 +02:00
|
|
|
read -r -p "Choose an encoder [0]: " encoder
|
2023-07-25 00:52:25 +02:00
|
|
|
[[ $encoder =~ ^[0-9]+$ ]] || { echo "Enter a valid number"; continue; }
|
|
|
|
if ((encoder >= 0 && encoder < ${#encoders[@]})); then
|
2023-07-25 15:28:00 +02:00
|
|
|
encoder=$(echo "${encoders[$encoder]}" | awk '{print $2}')
|
2023-07-25 00:52:25 +02:00
|
|
|
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
|
2023-07-25 15:28:00 +02:00
|
|
|
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
|