ffmpegスクリプトはリストの最初のスクリプトでのみ実行されますか?

ffmpegスクリプトはリストの最初のスクリプトでのみ実行されますか?

HQビデオをLQに変換する小さなスクリプトを書いています。

ls video/hq | cut -d. -f1 | while read line ; do
  HQ=./video/hq/$line.mp4
  LQ=./video/lq/$line.mp4
  ffmpeg -i $HQ -crf 40 $LQ
done;

私が実行すると、ls video/hq | cut -d. f1次のようになります。

1502460615677
1502461135975
1502461292963
1502461373947
1502461493936
1502461782119

1502460615677ただし、ランタイムは変換スクリプトのみを処理します。

ffmpeg行をechoに置き換えるとecho $lineすべての行が実行されますが、行を置き換えるとffmpeg1つだけ実行されます。

ffmpegが実行方法を変更する理由を知っている人はいますか?

ベストアンサー1

明らかに、ffmpeg標準入力からの読み出しはreadコマンドを妨げます。だから案内したいのですが/dev/null

ls video/hq | cut -d. -f1 | while read line ; do
  HQ=./video/hq/$line.mp4
  LQ=./video/lq/$line.mp4
  ffmpeg -i $HQ -crf 40 $LQ < /dev/null
done;

おすすめ記事