Bir sürü dosyayı toplu olarak kodlamaya çalışıyorum. İnternet üzerinden bakarken sadece birkaç senaryo buldum ve hiçbiri benim için işe yaramadı. Bir şeyi bir araya getirmeye başladım ve eksi bir problem çalışmaya yakın
PRESET değişkeni çalışmıyor. Değişkeni kaldırmayı ve kodu girmeyi bile denedim ve hala çalışmadım. Bu tür bir komutu find içinde kullanmama izin verildiğinden emin değilim. Bunu yapmanın daha basit bir yolu olduğundan eminim.
#!/bin/bash
SRC="/home/usr/temp/encode"
PRESET="-e x264 -q 20.0 -E faac -B 128 -6 dpl2 -w 1280 --loose-crop --loose-anamorphic --x264-preset veryfast --h264-profile high --h264-level 4.1"
find $SRC -type f -name '*.mp4' -exec bash -c 'name="{}"; HandBrakeCLI -i "$name" -o "${name}.tmp" $PRESET && rm "$name" && mv "${name}.tmp" "$name"' \;
find $SRC -type f -name '*.wmv' -exec bash -c 'name="{}"; HandBrakeCLI -i "$name" -o "${name%.wmv}.mp4" $PRESET && rm "$name"' \;
find $SRC -type f -name '*.mov' -exec bash -c 'name="{}"; HandBrakeCLI -i "$name" -o "${name%.mov}.mp4" $PRESET && rm "$name"' \;
exit
Bu dosyayı komut satırından dosyaya göre yapsaydım, şöyle görünürdü.
HandBrakeCLI -i "filename.mov" -o "filename.mp4" -e x264 -q 20.0 -E faac -B 128 -6 dpl2 -w 1280 --loose-crop --loose-anamorphic --x264-preset veryfast --h264-profile high --h264-level 4.1
Bir mp4 dosyasını yeniden boyutlandırmak isteseydim bunu yapardım, böylece kodlama sırasında dosyanın üzerine yazmazdım. Bu yüzden ilk bulgumda ekstra şeyler var.
HandBrakeCLI -i "filename.mp4" -o "filename.NEW.mp4" -e x264 -q 20.0 -E faac -B 128 -6 dpl2 -w 1280 --loose-crop --loose-anamorphic --x264-preset veryfast --h264-profile high --h264-level 4.1
PRESET
tek tırnak içinde belirir. Bu,bash -c
komut yürütülene kadar değerlendirilmeyeceği anlamına gelir . BuPRESET
deniz kabuğunu yapmalısın . Bu nedenle:PRESET=...
==>export PRESET=...