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如果我用with echo替换该行,则echo $line所有行都运行,但 with ffmpegit 只运行一个。

有人知道为什么 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;

相关内容