Благодаря многочисленным дискуссиям о сети SE и других местах мне, наконец, удалось создать рабочий скрипт, который хорошо работает, кроме предустановок Matroska. Я понимаю, что проблема заключается в самом скрипте, так как он определяет расширение назначения как MP4.
У меня нулевой опыт работы с bash, и я не мог понять, как улучшить скрипт, поэтому вместо предварительной установки выходного расширения он будет принимать расширения, как указано в официальных пресетах.
Контейнер большинства пресетов - это MP4, поэтому он работает для большинства пресетов, кроме MKV. Вот пример скрипта, который работает для MP4:
#!/bin/bash
# Configure these as needed
SRC=~/hbCLI/src
DEST=~/hbCLI/dest
DEST_EXT=mp4
HANDBRAKE_CLI=HandBrakeCLI
PRESET="Fast 480p30"
IFS=$(echo -en "\n\b")
# The script itself
for FILE in `ls $SRC`
do
filename=$(basename $FILE)
extension=${filename##*.}
filename=${filename%.*}
$HANDBRAKE_CLI -i $SRC/$FILE -o $DEST/$filename.$DEST_EXT --preset="$PRESET" --optimize --two-pass
done
Однако для пресетов Matroska мне нужно всего лишь изменить строку PRESET="Fast 480p30"
на PRESET="H.264 MKV 480p30"
но расширение выхода по-прежнему равно mp4
вместо mkv
.
Дополнительный запрос:
Не часть вопроса, но если кто-то из вас может помочь мне улучшить сценарий, чтобы выходные данные были сохранены в DEST=~/hbCLI/dest/$PRESET
вместо DEST=~/hbCLI/dest
есть выходные данные будут сохранены в папка с заданным именем, если она не существует - создайте папку.
Спасибо!