filelist.csvによるバッチ変換

filelist.csvによるバッチ変換

一部のビデオファイルをH264からH265に一括変換する必要があります。私のffmpegコマンドラインを知っていて相対パスを持つファイル名のcsvがあります(その場所の一部のファイルがすでに変換されているため、それを駆動するにはファイルリストが必要です)。今私が持っている唯一の問題は、ファイルリストから変換を推進することです。

私のコマンドライン:

cat mkv-analysis.csv | while read file; do $(ffmpeg -i '$file' -c:v libx265 -x265-params crf=23 -preset medium -c:a copy -c:s copy '${file%.mkv}_new.mkv'); done;

そしてデータサンプル:

Folder.A/file.A.mkv
Folder.B/file_b.mkv
Folder_C/file.C.mkv

だから、「$file:そのファイルやディレクトリがありません」というメッセージが表示されたら、誰もが私が間違っていることを教えてもらえますか?

ベストアンサー1

一重引用符を使用すると、$file変数が拡張されないことを意味します。

$ var="foo"
$ echo "$var"
foo
$ echo '$var'
$var

したがって、探しているコマンドは次のようになります(一部の改善点を含む)。

while read -r file; do 
    ffmpeg -i "$file" -c:v libx265 -x265-params crf=23 -preset medium -c:a copy -c:s copy "${file%.mkv}_new.mkv"
done < mkv-analysis.csv 

catコマンドを次のように渡す必要もなく、まったく意味がないことに注意してください。コマンドの置き換え$(command))。これは、コマンドの出力を変数としてキャプチャする場合にのみ必要です。

おすすめ記事