
My HD Homerun for PLEXは.TSファイル(トランスポートストリーム)を保存します。
720に範囲を絞り込むには、次のスクリプトを使用します。
#!/bin/bash
for INF in *.ts
do ffmpeg -i "$INF" -vf scale=-1:720 -c:v libx264 -crf 23 -preset ultrafast -c:a copy "${INF%.*}.mp4"
done
これはうまく機能し、フォルダの.shスクリプト内のすべての.TSをmp4コンテナに保存するように変換します。次に、次のスクリプトを実行します。
#!/usr/local/bin/bash
for INF in *.mp4
do
echo "Extracting subtitles"
ccextractor "$INF" -o "/tmp/$(basename "$INF" .ts).srt"
echo "Moving subtitles"
mv -v /tmp/*.srt .
done
私の目標は、これら2つのbashループを1つのスクリプトにまとめることです。理想的には、次のようなスクリプトが必要です。 a) 現在のフォルダとすべてのサブフォルダから .ts ファイルを検索します。 b) .ts を .mp4 にリミックス c) .ts からプライベートキャプションを抽出して .srt として保存 d) すべての .ts ファイルを削除する
"for INF in *.ts"の後に/を追加すると、サブディレクトリも含まれるかどうかはわかりません。これら2つのスクリプトを1つのファイルに結合する方法やファイル削除コードをどこに配置するのかわかりません。
どんなアイデアでも大いに感謝します。 -ション
答え1
これはどうですか:
for x in *.ts
do
y=$(basename "$x" .ts)
ffmpeg -i "$x" "$y".mp4
ffmpeg -i "$x" "$y".srt
done