1

現在、bash シェル スクリプトを使用して、すべての Plex DVR 録画を FFMPEG を使用して H.264 にエンコードしています。オンラインで見つけたこの小さな for ループを使用して、すべてのファイルを単一のディレクトリにエンコードしています。

for i in *.ts;
    do echo "$i" && ffmpeg -i "$i" -vf yadif -c:v libx264 -preset veryslow -crf 22 -y "/mnt/d/Video/DVR Stash/Seinfeld/${i%.*}.mp4";
done

これは目的を十分に果たしましたが、その過程で、エンコードされたファイルで元のファイル名Seinfeld (1989) - S01E01 - Pilot.tsが に変更されるように、ファイルの名前を好みの命名規則に変更したいと考えています。Seinfeld S01 E01 Pilot.mp4私はすでに正規表現を使用して.ts拡張子をに変更して.mp4いますが、特に bash シェルでは正規表現の専門家ではないので、助けていただければ幸いです。

私の Plex セットアップに興味がある人のために、私は専用の DVR として Linux Mint を実行している古いマシンを使用しており、実際にはゲーム マシンである日常のドライバーを使用してネットワーク経由でアクセスしているため、ビデオ エンコードの処理能力が向上しています。これは Windows マシンですが、WSL2 の下で Ubuntu bash を使用してスクリプトを実行しています。これは、Windows コマンド プロンプトや Powershell よりもこちらを好むためです (私の本業は、会社が発行した Mac の Web 開発者です)。そこで、似たようなことを考えている人のために、私のコードのサンプルを示します。

if [[ -d "/mnt/sambashare/Seinfeld (1989)" ]]
then
    cd "/mnt/sambashare/Seinfeld (1989)"
    echo "Seinfeld"
    for dir in */; do
        echo "$dir/"
        cd "$dir"
        for i in *.ts;
            do echo "$i" && ffmpeg -i "$i" -vf yadif -c:v libx264 -preset veryslow -crf 22 -y "/mnt/d/Video/DVR Stash/Seinfeld/${i%.*}.mp4";
        done
        cd ..
    done
fi

すべてのショーで for ループを実行することを検討しましたが、カスタム エンコーディング設定を使用しているショーがいくつかあるため、今のところ、このように各ショーを個別に実行しています。

4

1 に答える 1