在 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
輸出將保存到具有預設名稱的資料夾中(如果不存在) - 創建該資料夾。
謝謝你!