본문 바로가기

개발/node

[fluent-ffmpeg] video codec 변경

반응형

flutter로 작성한 모바일앱에서 첨부한 동영상 파일 중 일부가 재생 안 되는 현상 발생.

동영상 코덱이 재생할 수 없는 형태로 인코딩 되어있음을 확인했다.

 

nodejs 구성한 백엔드에서 첨부된 비디오 코덱을 일괄 변경하기로 결정.

fluent-ffmpeg이라는 라이브러리를 사용했다.

 

https://www.npmjs.com/package/fluent-ffmpeg 

 

fluent-ffmpeg

A fluent API to FFMPEG (http://www.ffmpeg.org). Latest version: 2.1.2, last published: 5 years ago. Start using fluent-ffmpeg in your project by running `npm i fluent-ffmpeg`. There are 922 other projects in the npm registry using fluent-ffmpeg.

www.npmjs.com

※ fluent-ffmpeg을 사용하기 위해서는 사전 세팅이 필요하다.

실행 가능한 ffmpeg과 ffprobe가 운영체제의 시스템 환경변수로 등록되어있어야 한다.

 

서버가 ubuntu 였으므로 아래와 같은 방법으로 설치해 주었다.

sudo apt install update
sudo apt install ffmpeg

ln -s /usr/bin/ffmpeg /usr/local/bin/ffmpeg

아래는 백엔드 코드 일부..

FILE.videoCodecChange =  async(file) => {
    return new Promise((resolve, reject) => {
        ffmpeg(file.path)
        .videoCodec('libx264')
        .on('error', function(err) {
            console.log(err);
            reject(err)
        })
        .on('end', async function() {
            console.log('video converting finished!');
            // 당시 파일모듈에 정의한 path와 filename에 따라 작성된 코드이므로 주석
            //fs.unlinkSync(file.path);
            //fs.rename(file.filename, file.path, function (err) {
            //    if (err) reject(err);
            //    console.log('video cp')
            //    resolve();
            //})
        })
        .save(file.filename)
    });
}

파일 관리 모듈에 비디오 코덱 변경을 위한 메서드를 선언해주고 

fluent-ffmpeg의 videoCodec을 사용하여 코덱을 변환하여 저장해준다.

반응형

'개발 > node' 카테고리의 다른 글

[face-api.js] 얼굴인식  (0) 2022.10.03