1
0

Fix names with spaces

Signed-off-by: James Ketrenos <jketreno@media.ketrenos.com>
This commit is contained in:
James Ketrenos 2022-04-11 11:56:56 +00:00
parent 6c95fc0765
commit 3bb489b3ad

View File

@ -2,8 +2,12 @@
# Look into HW video encoding to vp9 instead of h264: # Look into HW video encoding to vp9 instead of h264:
# https://www.reddit.com/r/VP9/comments/g9uzzv/hardware_encoding_vp9_on_intel/ # https://www.reddit.com/r/VP9/comments/g9uzzv/hardware_encoding_vp9_on_intel/
log_file=""
fail() { fail() {
echo "$*" >&2 echo "$*" >&2
if [[ -e ${log_file} ]]; then
rm ${log_file}
fi
exit -1 exit -1
} }
@ -50,10 +54,16 @@ mstodate() {
function move { function move {
base="$(dirname "${IN}")" base="$(dirname "${IN}")"
[ ! -d "${base}" ] && continue if [ ! -d "${base}" ]; then
base=/remote/media/backup/"${base}" continue
[ ! -d "${base}" ] && mkdir -p "${base}" || fail "Unable to mkdir '${base}'" fi
[ -e "${base}" ] && mv "${IN}" "${base}"/ || fail "Unable to move '$IN'" base=/multimedia/backup"${base}"
if [ ! -d "${base}" ]; then
mkdir -p "${base}" || fail "Unable to mkdir '${base}'"
fi
if [ -d "${base}" ]; then
mv "${IN}" "${base}"/ || fail "Unable to move '$IN'"
fi
} }
function convert { function convert {
@ -61,13 +71,15 @@ function convert {
SRC_CODEC="$2" SRC_CODEC="$2"
FORMAT="$3" FORMAT="$3"
OUT="${IN/%.???/.mkv}" OUT="${IN/%.???/.mkv}"
ORIG=${OUT} IN="$(realpath "${IN}")"
OUT="$(realpath "${OUT}")"
ORIG="${OUT}"
if [[ "${OUT}" == "${IN}" ]]; then if [[ "${OUT}" == "${IN}" ]]; then
OUT=${OUT/.mkv/.transcoded.mkv} OUT="${OUT/.mkv/.transcoded.mkv}"
[ -e "${OUT}" ] && rm "${OUT}" [ -e "${OUT}" ] && rm "${OUT}"
else else
[ -e "${OUT}" ] && move && return 0 [ -e "${OUT}" ] && move && return 0
[ -e /remote/media/backup/"${OUT}" ] && return 0 [ -e /multimedia/backup/"${OUT}" ] && return 0
fi fi
TITLE="${IN%.*}" TITLE="${IN%.*}"
@ -94,7 +106,7 @@ function convert {
-c copy -c copy
-vf vpp_qsv=format=nv12 -vf vpp_qsv=format=nv12
-c:v h264_qsv -c:v h264_qsv
-global_quality 25 -global_quality 20
" "
fi fi
@ -106,24 +118,23 @@ function convert {
STARTTIME=$(date +%s) STARTTIME=$(date +%s)
LASTTIME=${STARTTIME} LASTTIME=${STARTTIME}
LASTPOS=0 LASTPOS=0
IN=$(realpath "${IN}") DIN="$(dirname "${IN}")"
OUT=$(realpath "${OUT}") DOUT="$(dirname "${OUT}")"
DIN=$(dirname "${IN}")
DOUT=$(dirname "${OUT}")
quiet=" quiet="
-v quiet -v quiet
-loglevel fatal -loglevel error
" "
# quiet="" # quiet=""
log_file=$(mktemp)
{ {
docker run \ docker run \
--device=/dev/dri \ --device=/dev/dri \
--user=$(id -u) \ --user=$(id -u) \
--rm \ --rm \
${ADD_GROUPS} \ ${ADD_GROUPS} \
-v "${DIN}:${DIN}" \ -v "${DIN}":"${DIN}" \
-v "${DOUT}:${DOUT}" \ -v "${DOUT}":"${DOUT}" \
intel-media-ffmpeg \ intel-media-ffmpeg \
ffmpeg \ ffmpeg \
${quiet} \ ${quiet} \
@ -135,22 +146,25 @@ function convert {
${output_flags} \ ${output_flags} \
-movflags +faststart \ -movflags +faststart \
"${OUT}" \ "${OUT}" \
-y || echo "ffmpeg failed" -y || echo "FFMPEG failed" | tee ${log_file}
} | while read line; do } | while read line; do
if [[ "${line}" == "ffmpeg failed" ]]; then if [[ "${line}" == "ffmpeg failed" ]]; then
fail "FFMPEG failed" cat ${log_file}
fail "Terminating"
false false
exit -1 exit -1
break break
fi fi
POS=$(echo $line | sed -n 's/^frame=*\(.*\)/\1/p') POS=$(echo $line | sed -n 's/^frame=*\(.*\)/\1/p')
if [[ "${POS}" == "" ]]; then if [[ "${POS}" == "" ]]; then
true
continue continue
fi fi
NOW=$(date +%s) NOW=$(date +%s)
ELAPSEDTIME=$(( NOW - LASTTIME )) ELAPSEDTIME=$(( NOW - LASTTIME ))
if (( ELAPSEDTIME <= 5 )); then if (( ELAPSEDTIME <= 5 )); then
true
continue continue
fi fi
@ -174,6 +188,7 @@ function convert {
mv "${OUT}" "${IN}" || fail "Unable to mv '${OUT}' -> '${IN}'" mv "${OUT}" "${IN}" || fail "Unable to mv '${OUT}' -> '${IN}'"
fi fi
} }
rm ${log_file}
NOW=$(date +%s) NOW=$(date +%s)
echo -e "\nCompleted in $(mstodate $(( NOW - STARTTIME ))000)" echo -e "\nCompleted in $(mstodate $(( NOW - STARTTIME ))000)"
} }
@ -199,6 +214,8 @@ function check_and_convert {
} }
if [ -z "$1" ]; then if [ -z "$1" ]; then
find . -name '* *' -type d | while read file; do mv "${file}" "${file// /_}" || fail "Unable to rename dir ${file}"; done
find . -name '* *' -type f | while read file; do mv "${file}" "${file// /_}" || fail "Unable to rename file ${file}"; done
find . -type f \ find . -type f \
-and -not -path "./backup/*" | sort | while read file; do -and -not -path "./backup/*" | sort | while read file; do
check_and_convert "${file}" check_and_convert "${file}"
@ -208,3 +225,11 @@ else
check_and_convert "${file}" check_and_convert "${file}"
done done
fi fi
cat << EOF
To transfer the updated files:
rsync -avprlP --remove-source-files /multimedia/Downloads/ azurite:/multimedia/
find /multimedia/Downloads/ -type d -empty -delete
EOF