コーデックで画像を並べ替えて命令を実行する方法

コーデックで画像を並べ替えて命令を実行する方法

だからフィルタリングしようとしました。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

もちろん、このコマンドを必要に応じて調整する必要があります。

関連情報