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
決定はユーザーの役割です。