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모든 줄이 실행되지만, 줄을 바꾸면 ffmpeg하나만 실행됩니다.

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;

관련 정보