ffmpeg はファイルから読み取った変数名を受け付けません。

ffmpeg はファイルから読み取った変数名を受け付けません。

ffmpegを使用して複数のビデオを一括ダウンロードしようとしています。サイトアドレスと保存名のリストは、次の形式のテキストファイルに保存されます。

"site",filename.mp4

私のコードはファイルを繰り返しながら1行ずつダウンロードしようとしています。

#!/bin/bash

while IFS=, read dl nm
do
    echo $dl
    echo $nm
    /usr/bin/ffmpeg -loglevel error -protocol_whitelist file,http,https,tcp,tls,crypto -i  $dl -c copy $nm
done < $1

予想される出力は、各ループでffmpegが各行に表示されているファイルをダウンロードした後、ループの次の繰り返しを続行することです。

代わりに、ffmpegはエラーメッセージを出力します。

"site": No such file or directory

端末で同じコマンドを直接実行し、サイト名と保存名をコマンドに直接挿入すると正常に動作します。

この内容と関連があるような他の文をより添付してみました。

< /dev/null

ffmpeg 呼び出しが終了するまで実行されますが、まだ同じ効果があります。

ベストアンサー1

ファイルのダウンロードURL /場所に引用符を使用しているため、スクリプトに問題があります。

つまり、必要に応じてファイルがある場合、$ nm`は$dlまだ"site" and期待どおりに機能します。

これを行うには、サイトのダウンロード場所に引用符がないようにファイルを変更し、スクリプト$dlで引用符を設定する必要があります。

だからあなたは次のように終わります:

入力ファイルのリスト:

site,foobar.baz

スクリプト:

#!/bin/bash

while IFS=, read dl nm
do
    echo $dl
    echo $nm
    /usr/bin/ffmpeg -loglevel error -protocol_whitelist file,http,https,tcp,tls,crypto -i "$dl" -c copy $nm
done < $1

ファイル名にスペースが含まれている場合は引用符で囲むこともできますが、$nm決定はユーザーの役割です。

おすすめ記事