실행 프로세스
- REST API 요청 ->
- param 분석 ->
- 명령어 생성( builder 개발) ->
- child process ( exec or spawn ) 호출 ->
- ffmpeg 실행 ->
- 영상 생성 ->
- 서버 업로드 ->
- DB 상태 업로드
child_proccess 를 사용하지않고 nestjs 에서 제공하는 라이브러리 사용이 가능하지만 ffmpeg에서 다루는 모든 API를 제공하지 않아 child_process를 통한 직접 호출이 더 효과적이다.
| child_process 란 : nodejs 환경에서 python, git, ffmpeg등 외부 프로그램을 실행 할 수 있도로 지원하는 프로세스 모듈
exec 와 spawn 의 차이
exec : 버퍼 기반으로 결과를 한번에 받음
import { exec } from 'child_process';
exec(`ffmpeg -i input.mp4 -ss 3 -t 5 output.mp4`, (err) => { if (err) console.error(err); });
spawn : 스트림 기반, 실시간 응답
import { spawn } from 'child_process';
const ffmpeg = spawn('ffmpeg', ['-i', 'input.mp4', 'output.mp4']);
ffmpeg.stderr.on('data', data => console.log(data.toString()));