2

数百のビデオを X265 に再エンコードしようとしていますが、一部のファイルと同様に、ファイル名にスペースが含まれるディレクトリが多数あります。私はたくさんのスクリプトを見てきましたが、スペースやさまざまなディレクトリ レベルで機能するスクリプトを見つけるのに苦労しています。

サブディレクトリがない限り、これは機能します。

#!/bin/bash
for i in *.avi;
do 
    ffmpeg -i "$i" -c:v libx265 -c:a copy X265_"$i"
done

この bash スクリプトを使用しようとしていますが、推測している空白で失敗します。

#!/bin/bash
inputdir=$PWD
outputdir=$PWD
while IFS= read -r file ; do
  video=`basename "$file"`
  dir=`dirname "$file"`
 ffmpeg -fflags +genpts -i "$file" -c:v libx265 -c:a copy "$dir"/X265_"$video"
done < <(find "$inputdir" -name "*.avi" | head -100)

このスレッドでは、Windows ユーザーには良い解決策のように見えますが、Linux にはそうではありません。 FFMPEG - サブフォルダーのバッチ変換

FOR /r %%i in (*.mp4) DO ffmpeg32 -i "%%~fi" -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutoff 15000 -c:a:1 copy "%%~dpni(2)%%~xi"

bash に適した適切な解決策を教えていただければ幸いです。

4

2 に答える 2