Node.js 및 Docker와 함께 FFmpeg를 사용하는 방법

3439 단어 node

Node.js에서 오디오 및 비디오 파일로 쉽게 작업하는 방법



오늘 우리는 Docker 컨테이너 내에서 Node.js와 함께 FFmpeg를 사용하는 방법을 배웁니다.

배경



일반적으로 Node.js 애플리케이션을 실행할 때 해당 애플리케이션에 필요한 모든 부분은 node_modules 폴더 안에 있는 npm 패키지 안에 있습니다.

그러나 일부 특정 사용 사례의 경우 OS 수준 애플리케이션에 액세스해야 하므로 약간 복잡합니다.
이에 대한 한 가지 좋은 예는 문서에서 다음과 같이 설명된 FFmpeg입니다.
https://ffmpeg.org/

오디오 및 비디오를 기록, 변환 및 스트리밍하는 완벽한 교차 플랫폼 솔루션입니다.

간단히 말해서, 오디오 및 비디오 변환 또는 수정 작업이 필요한 경우 이것이 필요합니다.

문제



문제는 FFmpeg가 그냥 설치하고 사용할 수 있는 npm 모듈이 아니라는 것입니다. FFmpeg 위에 추상화를 생성하는 ffcreatorfluent-ffmpeg와 같은 FFmpeg 위에 일부 라이브러리가 있지만 여전히 OS 레벨에 FFmpeg를 설치해야 합니다.

따라서 문제를 해결하기 위한 쉬운 해결책 중 하나는 애플리케이션을 실행 중인 서버에 FFmpeg를 설치하는 것입니다.

그러나 현대에는 하드웨어를 직접 사용하는 경우가 거의 없습니다. 새 서버가 필요할 때마다 다시 설치해야 하기 때문입니다.

반복적이고 지루한 것은 무엇입니까?

해결책



더 쉬운 방법은 애플리케이션을 Docker 이미지 내에 설치된 FFmpeg와 번들로 묶는 것입니다. 이렇게 하면 정말 쉽게 배포할 수 있으며 이제 애플리케이션을 공유하고 재현할 수 있습니다!

하지만 정확히 어떻게합니까? 정말 간단합니다. 기본 이미지 위에 FFmpeg 설치 명령을 실행하면 됩니다.

다음은 트릭을 수행하는 작업 Dockerfile입니다.

FROM node:16-alpine

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

## following 3 lines are for installing ffmepg
RUN apk update
RUN apk add
RUN apk add ffmpeg

COPY . .

EXPOSE 4000

RUN npm run build

CMD [ "node", "dist/src/index.js" ]


따라서 중간에 있는 3줄은 Node.js Alpine 기본 이미지 내부에 FFmpeg를 설치합니다.

RUN apk update
RUN apk add
RUN apk add ffmpeg


참고: apk add를 사용하는 이유는 상단에서 노드(크기가 더 작음)의 node:16-alpineversion를 선택했기 때문입니다.
node:16 와 같은 적절한 Node.js 이미지를 사용하는 경우 FFmpeg를 설치하는 명령은 다음과 같습니다.

RUN apt update
RUN apt install ffmpeg


그것은 트릭을 수행해야합니다.

대안



위의 접근 방식은 Node.js 및 Docker 이미지에 적용됩니다. 그러나 AWS Lambda 또는 Google Cloud Functions를 사용하여 Node.js 애플리케이션을 배포하려는 경우 몇 가지 문제가 발생합니다.

이를 방지하기 위해 다른 접근 방식이 있습니다. ffmpeg-static라는 npm 패키지를 사용할 수 있습니다.

프로젝트 내부:

npm install --save ffmpeg-static


바이너리 파일을 다운로드하여 node_modules 폴더에 저장합니다. 응용 프로그램에서 node_modules 폴더 내의 이진 파일 경로를 지정해야 합니다.

다음과 같은 방법으로 경로를 가져올 수 있습니다.

var pathToFfmpeg = require('ffmpeg-static');
console.log(pathToFfmpeg);


그런 다음 경로로 내보낼 수 있습니다.

ENV PATH="/your/path/to/node_modules/ffmpeg-
static/bin/linux/x64:${PATH}"


그것이 당신이 그것을 성취할 수 있는 방법입니다. 이 특정 스레드가 유용합니다.
https://stackoverflow.com/questions/50693091/ffmpeg-install-within-existing-node-js-docker-image

오늘은 여기까지입니다. 좋은 하루 되세요!

자원:
https://stackoverflow.com/questions/50693091/ffmpeg-install-within-existing-node-js-docker-image

좋은 웹페이지 즐겨찾기