我写了一个小脚本,将 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 ffmpeg
it 只运行一个。
有人知道为什么 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;