728x90
반응형
0. 알아두기
- AWS람다란? AWS에서 제공하는 서버리스 컴퓨팅 서비스.
- FFmpeg란? 모든 동영상, 음악, 사진 포맷들의 디코딩과 인코딩을 목표로 만들어지고 있는 오픈 소스 프로젝트.
1. 사전준비
1) https://johnvansickle.com/ffmpeg/ 접속
2) ffmpeg-release-amd64-static.tar.xz 다운로드 (240303기준 6.1버전)
3) 압축풀고 들어가서 ffmpeg-6.1-amd64-static 파일 이름 ffmpeg 변경 후 zip 압축
(여기서 이름 변경 안 하고 압축한 뒤 이름 바꾸면 람다 /opt 에서 쓸때 애먹음)
4) ffmpeg.zip s3 업로드
2. aws lambda 접속
1) 좌측메뉴 '계층' 버튼 클릭 => ffmpeg 이름으로 계층 생성 (위에 업로드한 ffmpeg.zip의 객체 URL 활용)
2) 좌측메뉴 '함수' 버튼 클릭 => convertVideo 이름으로 함수 생성 (이름 마음대로~)
3. convertVideo 함수 상세 이동
1) 최하단 '계층 추가' => 사용자 지정 계층 => ffmpeg 계층 선택
2) '/opt'에 ffmpeg 잘 들어왔는지 확인
(계층에 업로드된 파일은 런타임에 압축이 풀린 상태로 /opt 위치하게됨)
(계층은 AWS Lambda의 한정된 용량을 극복하고자 나온 공통 패키지 보관 방법!)
export const handler = async (event, context) => {
return new Promise((resolve) => {
fs.readdir("/opt", (err, files) => {
resolve(files);
});
});
};
// result: ['ffmpeg']
4. 로컬 활용 업로드
npm init
npm install fluent-ffmpeg
1) 로컬에 세팅한 파일을 node_modules 포함하여 zip 파일 생성
2) 함수 상세에서 .zip 파일로 업로드
5. index.mjs를 아래와 같이 작성하여 ffmpeg 실행!
import ffmpeg from "fluent-ffmpeg";
ffmpeg.setFfmpegPath('/opt/ffmpeg/ffmpeg'); //생략가능
export const handler = async (event, context) => {
return ffmpeg();
};
6. 결과
반응형
'Document' 카테고리의 다른 글
Github 프로필 초간단 꾸미기 (0) | 2024.03.12 |
---|---|
Github 오픈소스 PR 올리기 (with nuxt-seo) (0) | 2024.03.10 |
스테이블 디퓨전 로컬에서 초간단 시작! (ver202403) (0) | 2024.03.03 |