fluent-ffmpeg vs ffmpeg-static vs @ffmpeg/ffmpeg vs @ffmpeg/core
Comparação de pacotes npm de "Manipulação de Vídeo com FFmpeg"
1 Ano
fluent-ffmpegffmpeg-static@ffmpeg/ffmpeg@ffmpeg/core
O que é Manipulação de Vídeo com FFmpeg?

As bibliotecas FFmpeg para Node.js permitem que os desenvolvedores manipulem arquivos de áudio e vídeo diretamente de suas aplicações. Elas oferecem funcionalidades como conversão de formatos, extração de áudio, aplicação de filtros e muito mais, tudo através de uma interface programática. Isso é especialmente útil para aplicações que precisam processar mídia de forma dinâmica, como plataformas de streaming, editores de vídeo online ou ferramentas de automação de mídia. O FFmpeg é uma ferramenta poderosa e versátil para manipulação de mídia, e essas bibliotecas trazem seu poder para o ambiente Node.js, permitindo operações complexas de forma eficiente e programática.

Tendência de downloads npm
Ranking de GitHub Stars
Detalhe de estatísticas
Pacote
Downloads
Stars
Tamanho
Issues
Publicado em
Licença
fluent-ffmpeg960,1618,19612.4 MB418il y a un anMIT
ffmpeg-static176,2921,19148.2 kB24il y a 2 ansGPL-3.0-or-later
@ffmpeg/ffmpeg126,65715,73972 kB388il y a 4 moisMIT
@ffmpeg/core43,16415,73964.7 MB388il y a 4 moisGPL-2.0-or-later
Comparação de funcionalidades: fluent-ffmpeg vs ffmpeg-static vs @ffmpeg/ffmpeg vs @ffmpeg/core

Ambiente de Execução

  • fluent-ffmpeg:

    fluent-ffmpeg é uma biblioteca Node.js que requer o FFmpeg instalado no sistema. Ela não funciona em ambientes de navegador, mas oferece uma interface poderosa para manipulação de mídia no lado do servidor.

  • ffmpeg-static:

    ffmpeg-static fornece uma versão pré-compilada do FFmpeg para Node.js, mas não é projetada para uso em navegadores. É ideal para aplicações de servidor que precisam do FFmpeg.

  • @ffmpeg/ffmpeg:

    @ffmpeg/ffmpeg também funciona em navegadores e Node.js, oferecendo uma implementação completa do FFmpeg que pode ser utilizada em qualquer lugar.

  • @ffmpeg/core:

    @ffmpeg/core é projetado para funcionar em ambientes de navegador e Node.js, tornando-o versátil para aplicações que precisam de processamento de mídia em ambos os contextos.

Facilidade de Uso

  • fluent-ffmpeg:

    fluent-ffmpeg é conhecido por sua API intuitiva que facilita a construção de comandos FFmpeg complexos, tornando-o acessível para desenvolvedores de todos os níveis.

  • ffmpeg-static:

    ffmpeg-static é muito fácil de usar, pois fornece o executável do FFmpeg sem a necessidade de instalação adicional.

  • @ffmpeg/ffmpeg:

    @ffmpeg/ffmpeg fornece uma interface mais completa para trabalhar com o FFmpeg, mas pode ser complexa para iniciantes.

  • @ffmpeg/core:

    @ffmpeg/core oferece uma API simples e direta para manipulação de mídia, mas pode exigir algum conhecimento sobre como usar o FFmpeg.

Tamanho do Pacote

  • fluent-ffmpeg:

    fluent-ffmpeg é relativamente leve, mas requer que o FFmpeg esteja instalado no sistema, o que pode variar em tamanho.

  • ffmpeg-static:

    ffmpeg-static adiciona um tamanho mínimo ao seu projeto, pois inclui apenas o executável do FFmpeg.

  • @ffmpeg/ffmpeg:

    @ffmpeg/ffmpeg é maior devido à sua implementação completa do FFmpeg, mas oferece mais funcionalidades.

  • @ffmpeg/core:

    @ffmpeg/core é um pacote leve, projetado para ser eficiente em termos de tamanho, especialmente para aplicações da Web.

Dependências do Sistema

  • fluent-ffmpeg:

    fluent-ffmpeg requer que o FFmpeg esteja instalado no sistema, o que pode ser uma barreira para alguns usuários.

  • ffmpeg-static:

    ffmpeg-static elimina a necessidade de instalar o FFmpeg manualmente, fornecendo uma solução pronta para uso.

  • @ffmpeg/ffmpeg:

    @ffmpeg/ffmpeg também não tem dependências externas, mas requer um entendimento do FFmpeg para usá-lo efetivamente.

  • @ffmpeg/core:

    @ffmpeg/core não tem dependências externas, tornando-o fácil de integrar em qualquer projeto.

Exemplo de Código

  • fluent-ffmpeg:

    Exemplo de uso do fluent-ffmpeg para redimensionamento de vídeo

    const ffmpeg = require('fluent-ffmpeg');
    ffmpeg('input.mp4')
      .output('output.mp4')
      .videoCodec('libx264')
      .size('640x?')
      .on('end', () => console.log('Conversão concluída'))
      .on('error', (err) => console.error('Erro:', err))
      .run();
    
  • ffmpeg-static:

    Exemplo de uso do ffmpeg-static para conversão de vídeo

    const ffmpegPath = require('ffmpeg-static');
    const { execFile } = require('child_process');
    execFile(ffmpegPath, ['-i', 'input.mp4', 'output.mp4'], (err, stdout, stderr) => {
      if (err) throw err;
      console.log(stdout);
      console.error(stderr);
    });
    
  • @ffmpeg/ffmpeg:

    Exemplo de uso do @ffmpeg/ffmpeg para extração de áudio

    import { createFFmpeg, fetchFile } from '@ffmpeg/ffmpeg';
    const ffmpeg = createFFmpeg({ log: true });
    (async () => {
      await ffmpeg.load();
      ffmpeg.FS('writeFile', 'input.mp4', await fetchFile('input.mp4'));
      await ffmpeg.run('-i', 'input.mp4', '-q:a', '0', 'output.mp3');
      const data = ffmpeg.FS('readFile', 'output.mp3');
      const audio = new Audio(URL.createObjectURL(new Blob([data.buffer])));
      audio.play();
    });
    
  • @ffmpeg/core:

    Exemplo de uso do @ffmpeg/core para conversão de vídeo

    import { createFFmpeg, fetchFile } from '@ffmpeg/core';
    const ffmpeg = createFFmpeg({ log: true });
    (async () => {
      await ffmpeg.load();
      ffmpeg.FS('writeFile', 'input.mp4', await fetchFile('input.mp4'));
      await ffmpeg.run('-i', 'input.mp4', 'output.mp4');
      const data = ffmpeg.FS('readFile', 'output.mp4');
      const video = document.createElement('video');
      video.src = URL.createObjectURL(new Blob([data.buffer]));
      document.body.append(video);
      video.controls = true;
      video.play();
    });
    
Como escolher: fluent-ffmpeg vs ffmpeg-static vs @ffmpeg/ffmpeg vs @ffmpeg/core
  • fluent-ffmpeg:

    Escolha fluent-ffmpeg se você precisar de uma API de alto nível para trabalhar com o FFmpeg no Node.js. Ele simplifica a construção de comandos FFmpeg complexos e é ideal para desenvolvedores que desejam uma interface mais amigável para manipulação de mídia.

  • ffmpeg-static:

    Escolha ffmpeg-static se você precisar de uma versão pré-compilada do FFmpeg que seja fácil de integrar em sua aplicação. É útil para projetos que não querem lidar com a instalação manual do FFmpeg e precisam de uma solução rápida e confiável.

  • @ffmpeg/ffmpeg:

    Escolha @ffmpeg/ffmpeg se você precisar de uma implementação completa do FFmpeg que funcione tanto no navegador quanto no Node.js. Ele oferece acesso a todas as funcionalidades do FFmpeg, tornando-o adequado para aplicações que precisam de controle total sobre o processamento de mídia.

  • @ffmpeg/core:

    Escolha @ffmpeg/core se você precisar de uma solução leve e moderna que funcione inteiramente no navegador e no Node.js. É ideal para aplicações que exigem processamento de mídia em ambientes restritos, como aplicativos da Web.