だからフィルタリングしようとしました。H265/HEVC以前のコーデックではなくビデオのみを表示し、マイ設定を使用してビデオをトランスコードするコマンドを実行します。
私が望む方法で解決策や方法を見つけるたびに動作しません。それは一種のバグであるか、もはや使用されなくなり、今はそうではありません。
しかし、次のようにする必要があります。
find /mnt/videos -type f *.mp4 exec $filtercmd; $transcodecmd
このコマンドはファイルの絶対パスを印刷し、2番目のコマンドでそれを使用してトランスコードできるようにする必要があります。
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
しかし、空間を脱出しているようです。終了できないようです。どう思いますか?
答え1
答えを見つけました!
#!/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を確認してファイルをトランスコードします。それ以外の場合はそのまま残ります。皆様のご協力ありがとうございます。私は時々愚かかもしれないことに気づきます。 :)
答え2
次のコマンドを使用できます。
find /your/path -exec bash -c "if file {} | grep "python"; then cat {} ; fi" \;
このコマンドは、file
見つかったすべてのファイルに対して実行されるか、このコマンドの出力に「python」が含まれている場合に実行されますcat
。
もちろん、このコマンドを必要に応じて調整する必要があります。