Shell-Script
如何按編解碼器對影片進行排序並執行命令
所以我一直在嘗試過濾掉H265/HEVC,只顯示不是以前編解碼器的影片,然後執行我擁有的命令,該命令將使用我的設置對影片進行轉碼。
每次我找到解決方案或方法時,我可能會操縱我想要的方式來完成它,它不起作用。要麼是某種錯誤,要麼是過時的錯誤,現在不是這樣。
但它應該是這樣的:
find /mnt/videos -type f *.mp4 exec $filtercmd; $transcodecmd
該命令應該只列印文件的絕對路徑,這樣我就可以讓它被第二個命令使用,以便可以對其進行轉碼。
我更喜歡使用
ffprobe
它,因為它似乎是一種更清潔的方法。而且我討厭基本上要求某人編寫命令或腳本,但我只是不具備這樣的知識。如果這是為了按計劃寫的,那就太好了。提前致謝!
編輯:
我想我可能已經找到了解決辦法。
#!/bin/bash # Reset Color_Off='\033[0m' # Text Reset # Regular Colors Red='\033[0;31m' # Red Green='\033[0;32m' # Green # Bold BRed='\033[1;31m' # Red BGreen='\033[1;32m' # Green for i in $(find /mnt/movies/ -type f -name '*.mkv' -o -name '*.mp4' -o -name '*.wmv' -o -name '*.flv' -o -name '*.webm' -o -name '*.mov'); do ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "${i}" if [[ $1 == 'h264' ]]; then echo "Video is a ${BGreen}H264${Color_off} video file" python sickbeard_mp4_automator/manual.py -i "$i" -a elif [[ $1 == hevc ]]; then echo "Video is alread transcoded to ${BRed}HEVC${Color_Off}" fi done
但它似乎正在逃離空間。似乎無法讓它退出。你們有什麼感想?
我找到了答案!
#!/bin/bash IFS=$'\n' # Reset Color_Off='\033[0m' # Text Reset # Regular Colors Red='\033[0;31m' # Red Green='\033[0;32m' # Green # Bold BRed='\033[1;31m' # Red BGreen='\033[1;32m' # Green for i in $(find /mnt/movies/ -type f -name '*.mkv' -o -name '*.mp4' -o -name '*.wmv' -o -name '*.flv' -o -name '*.webm' -o -name '*.mov'); do # ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$i" if [ $(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$i") = h264 ]; then echo -e "Video is a ${BGreen}H264${Color_Off} video file" python2 sickbeard_mp4_automator/manual.py -i "$i" -a elif [ $(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$i") == hevc ]; then echo -e "Video is already transcoded to ${BRed}HEVC${Color_Off}" elif [ $(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$i") == vp8 ]; then echo -e "Video is a ${BGreen}WEBM${Color_Off} video file" python2 sickbeard_mp4_automator/manual.py -i "$i" -a fi done
這將檢查 H264 並對文件進行轉碼。否則它就不管它。感謝大家的幫助,並意識到我有時可能是個白痴。:)