![실시간 ffmpeg(파이프) 변환을 병렬로 어떻게 실행합니까?](https://rvso.com/image/154453/%EC%8B%A4%EC%8B%9C%EA%B0%84%20ffmpeg(%ED%8C%8C%EC%9D%B4%ED%94%84)%20%EB%B3%80%ED%99%98%EC%9D%84%20%EB%B3%91%EB%A0%AC%EB%A1%9C%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%8B%A4%ED%96%89%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
답변1
GNU Parallel을 사용하면 다음과 같이 작동합니다.
parallel 'ffmpeg -i {} -f wav - | opusenc --bitrate 38 - {.}.opus' ::: *m4a
어쩌면 그 정도면 충분하지 않을까?
CPU 스레드당 1개의 작업만 실행한다는 추가 이점이 있으므로 1000개의 파일이 있으면 컴퓨터에 과부하가 걸리지 않습니다.
답변2
나는 이 구성을 생각해 냈지만 (... &)
왜 그것이 작동하는지 잘 모르겠습니다.
for f in R*.mp3
do
(time ffmpeg -loglevel 0 -i "$f" -ac 1 -y "${f%mp3}new.mp3" && date && ls -l "$f" &)
done
4개 파일 포함:
real 0m0.784s
user 0m0.795s
sys 0m0.048s
So 10 Sep 2023 16:36:43 UTC
-rw-r--r-- 1 root root 1363436 10.Sep 10:04 REC-005.mp3
real 0m1.037s
user 0m1.064s
sys 0m0.040s
So 10 Sep 2023 16:36:43 UTC
-rw-r--r-- 1 root root 1540076 10.Sep 10:04 REC-003.mp3
real 0m1.822s
user 0m1.882s
sys 0m0.055s
So 10 Sep 2023 16:36:44 UTC
-rw-r--r-- 1 root root 2948588 10.Sep 10:04 REC-002.mp3
real 0m2.196s
user 0m2.253s
sys 0m0.061s
So 10 Sep 2023 16:36:44 UTC
-rw-r--r-- 1 root root 3402476 10.Sep 10:04 REC-004.mp3
가장 큰 파일이 마지막에 끝납니다. 나는 time
bash-를 가지고 있습니다 list
. 그러나 (...&)가 없으면 "중지된" 작업도 발생합니다(확장되지 않은 변수 포함).