ffmpegを使用したBashスクリプト

ffmpegを使用したBashスクリプト

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

おすすめ記事