Shell-Script

如何按編解碼器對影片進行排序並執行命令

  • August 30, 2019

所以我一直在嘗試過濾掉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 並對文件進行轉碼。否則它就不管它。感謝大家的幫助,並意識到我有時可能是個白痴。:)

引用自:https://unix.stackexchange.com/questions/538293