본문 바로가기

개발/nodejs

ffmpeg 서버 프로세스

 

실행 프로세스 

  1. REST API 요청 ->
  2. param 분석 -> 
  3. 명령어 생성( builder 개발) -> 
  4. child process ( exec or spawn ) 호출 ->
  5. ffmpeg 실행 ->
  6. 영상 생성 ->
  7. 서버 업로드 ->
  8. 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()));