FFmpeg-6.0

Introdução ao FFmpeg

FFmpeg é uma solução para gravar, converter e transmitir áudio e vídeo. Ela é um conversor de vídeo e áudio muito rápido e também pode adquirir a partir de uma fonte ao vivo de áudio/vídeo. Projetada para ser intuitiva, a interface de linha de comando (ffmpeg) tenta avaliar todos os parâmetros, quando possível. FFmpeg também pode converter de qualquer taxa de amostragem para qualquer outra e redimensionar o vídeo instantaneamente com um filtro polifásico de alta qualidade. FFmpeg pode usar uma fonte de vídeo compatível com Video4Linux e qualquer fonte de áudio Open Sound System.

Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.0.

Informação do Pacote

  • Transferência (HTTP): https://ffmpeg.org/releases/ffmpeg-6.0.tar.xz

  • Transferência (FTP):

  • Soma de verificação MD5 da transferência: 47b6c5d930937413c3e308e2fdb3dfb5

  • Tamanho da transferência: 9,8 MB

  • Espaço em disco estimado exigido: 187 MB (adicionar 1,5 GB para a suíte/testes FATE; adicionar 786 MB para documentação)

  • Tempo de construção estimado: 1,3 UPC (usando paralelismo=4; adicionar 3,2 UPC (com THREADS=4) para executar a suíte FATE depois que arquivos de amostra forem baixados; adicionar 0,3 UPC para documentos doxygen)

Transferências Adicionais

Dependências do FFmpeg

Recomendadas

Recomendadas para uso de área de trabalho

Opcionais

Doxygen-1.9.7, Fontconfig-2.14.2, FriBidi-1.0.13, frei0r-plugins-1.8.0, libcdio-2.1.0 (para identificar e reproduzir CDs), libdrm-2.4.115 (para entrada kmsgrab), libwebp-1.3.1, opencv-4.8.0, OpenJPEG-2.5.0, GnuTLS-3.8.1, PulseAudio-16.1, Samba-4.18.6, Speex-1.2.1, texlive-20230313 (ou install-tl-unx) para documentação PDF e PS, v4l-utils-1.24.1, XviD-1.3.7, um ambiente gráfico, Flite, GSM, libaacplus, libbluray, libcaca, libcelt, libdc1394, libdca, libiec61883, libilbc, libmodplug, libnut (Check-out do Git), librtmp, libssh, OpenAL, OpenCore AMR, Srt, Schroedinger, TwoLAME, vo-aaenc, vo-amrwbenc e ZVBI

Instalação do FFmpeg

[Nota]

Nota

Alguns avisos inofensivos possivelmente sejam emitidos pelo processo de construção em relação à documentação HTML. Isso é devido a uma incompatibilidade com o Texinfo-7.0 e superior.

Primeiro, aplique um remendo que adicione uma API necessária para alguns pacotes construírem:

patch -Np1 -i ../ffmpeg-6.0-chromium_method-1.patch

Agora, aplique um remendo que permite o pacote construir com binutils-2.41:

patch -Np1 -i ../ffmpeg-6.0-binutils_2.41-1.patch

Instale o FFmpeg executando os seguintes comandos:

./configure --prefix=/usr        \
            --enable-gpl         \
            --enable-version3    \
            --enable-nonfree     \
            --disable-static     \
            --enable-shared      \
            --disable-debug      \
            --enable-libaom      \
            --enable-libass      \
            --enable-libfdk-aac  \
            --enable-libfreetype \
            --enable-libmp3lame  \
            --enable-libopus     \
            --enable-libtheora   \
            --enable-libvorbis   \
            --enable-libvpx      \
            --enable-libx264     \
            --enable-libx265     \
            --enable-openssl     \
            --docdir=/usr/share/doc/ffmpeg-6.0 &&

make &&

gcc tools/qt-faststart.c -o tools/qt-faststart

A documentação HTML foi construída na etapa anterior. Se você tiver o texlive-20230313 instalado e desejar construir versões PDF e Postscript da documentação, emita os seguintes comandos:

pushd doc &&
for DOCNAME in `basename -s .html *.html`
do
    texi2pdf -b $DOCNAME.texi &&
    texi2dvi -b $DOCNAME.texi &&

    dvips    -o $DOCNAME.ps   \
                $DOCNAME.dvi
done &&
popd &&
unset DOCNAME

Se você tiver o Doxygen-1.9.7 instalado e desejar construir (se --disable-doc foi usado) ou reconstruir a documentação HTML, emita:

doxygen doc/Doxyfile

Os testes da suíte FATE incluem comparações com arquivos instalados e não deveriam ser executados antes que o pacote esteja instalado. Portanto, se você desejar executá-los, as instruções são fornecidas mais abaixo.

Agora, como o(a) usuário(a) root:

make install &&

install -v -m755    tools/qt-faststart /usr/bin &&
install -v -m755 -d           /usr/share/doc/ffmpeg-6.0 &&
install -v -m644    doc/*.txt /usr/share/doc/ffmpeg-6.0

Se a documentação PDF e Postscript foi construída, emita os seguintes comandos, como o(a) usuário(a) root, para instalá-las:

install -v -m644 doc/*.pdf /usr/share/doc/ffmpeg-6.0 &&
install -v -m644 doc/*.ps  /usr/share/doc/ffmpeg-6.0

Se você usou o doxygen para criar manualmente a documentação da API, instale-a emitindo os seguintes comandos como o(a) usuário(a) root:

install -v -m755 -d /usr/share/doc/ffmpeg-6.0/api                     &&
cp -vr doc/doxy/html/* /usr/share/doc/ffmpeg-6.0/api                  &&
find /usr/share/doc/ffmpeg-6.0/api -type f -exec chmod -c 0644 \{} \; &&
find /usr/share/doc/ffmpeg-6.0/api -type d -exec chmod -c 0755 \{} \;

Para testar a instalação corretamente, você precisa ter o rsync-3.2.7 instalado e seguir as instruções para o FFmpeg Automated Testing Environment (FATE). Primeiro, cerca de 1 GB de arquivos de amostra usados para executar o FATE são baixados com o comando:

make fate-rsync SAMPLES=fate-suite/

O diretório fate-suite é criado e os arquivos são baixados lá. Esse comando, atualmente, executa um comando rsync para obter os arquivos de amostra. Você possivelmente queira comprimir e manter esse diretório para testagem novamente, para testagem em outro sistema ou para quando uma nova versão do FFmpeg for lançada. Em seguida, desempacote os arquivos de amostra no diretório do fonte e execute o comando make fate-rsync ... acima para sincronizar com o repositório do(a) desenvolvedor(a). O tamanho e o tempo da transferência são drasticamente reduzidos com isso. Os valores estimados em "Informações do Pacote" não incluem o UPC de transferência. Algumas amostras possivelmente tenham sido removidas em versões mais recentes, de forma que, para a finalidade de ter certeza de que as amostras FATE locais e do servidor sejam idênticas, ao usar amostras salvas anteriormente, execute o seguinte comando:

rsync -vrltLW  --delete --timeout=60 --contimeout=60 \
      rsync://fate-suite.ffmpeg.org/fate-suite/ fate-suite/

Em seguida, execute FATE com os seguintes comandos (existem mais que três mil e oitocentos (3.800) testes na suíte):

make fate THREADS=N SAMPLES=fate-suite/ | tee ../fate.log &&
grep ^TEST ../fate.log | wc -l

onde N é um inteiro, N ≤ número de elementos de processamento no sistema.

Uma execução bem-sucedida não deveria retornar erros ou avisos, apenas uma lista de testes e o valor total no final.

Explicações do Comando

sed -i ... configure: Esse comando adiciona a biblioteca ALSA à variável LDFLAGS do Flite e habilita o descoberta do Flite.

find ... ;: Corrige permissões de arquivos e diretórios da documentação.

--enable-libfreetype: Habilita suporte a Freetype.

--enable-gpl: habilita o uso de código GPL e permite suporte para pós-processamento, swscale e muitos outros recursos.

--enable-version3: Habilita o uso do código (L)GPL versão 3.

--enable-nonfree: Habilita o uso de código não-livre. Observe que as bibliotecas e binários resultantes não serão redistribuíveis.

--disable-static: Essa chave impede a instalação das versões estáticas das bibliotecas.

--enable-shared: Habilita construir bibliotecas compartilhadas, caso contrário, somente bibliotecas estáticas serão construídas e instaladas.

--disable-debug: Desabilita construir símbolos de depuração nos aplicativos e bibliotecas.

--enable-libaom: Habilita decodificação de áudio e vídeo AV1 via libaom.

--enable-libass: Habilita a renderização do formato de legenda ASS/SSA via libass.

--enable-libdrm: Use essa chave, se o libdrm-2.4.115 estiver instalado, para construir o módulo de entrada kmsgrab, o qual é útil para captura ou transmissão de tela.

--enable-libfdk-aac: Habilita a codificação de áudio AAC via libfdk-aac.

--enable-libmp3lame: Habilita a codificação de áudio MP3 via libmp3lame.

--enable-libvorbis --enable-libtheora: Habilita a codificação de vídeo Theora via libvorbis e libtheora.

--enable-libvorbis --enable-libvpx: Habilita a codificação WebM via libvorbis e libvpx.

--enable-libx264: Habilita a codificação H.264/MPEG-4 AVC de alta qualidade via libx264.

--enable-libx265: Habilita a codificação H.265/HEVC de alta qualidade via libx265.

--enable-openssl: Habilita o protocolo HTTPS para fluxos de rede de intercomunicação.

--enable-gnutls: Use essa opção, em vez de --enable-openssl, se você quiser usar GnuTLS em vez de OpenSSL para protocolo HTTPS.

--disable-doc: Desabilita construir documentação HTML. Isso somente é necessário se o Doxygen-1.9.7 estiver instalado e você não quiser construir a documentação HTML.

--enable-libpulse: Habilita suporte para Pulseaudio para saída de áudio.

gcc tools/qt-faststart.c -o tools/qt-faststart: Isso constrói o aplicativo qt-faststart, o qual pode modificar filmes formatados em QuickTime (.mov ou .mp4), de forma que as informações do cabeçalho estejam localizadas no início do arquivo, e não no final. Isso permite que o arquivo do filme comece a ser reproduzido antes que todo o arquivo tenha sido baixado.

[Nota]

Nota

O suporte para a maioria dos pacotes de dependências exige usar opções passadas para o conjunto de comandos sequenciais configure. Veja a saída gerada a partir de ./configure --help para informações completas a respeito de habilitar pacotes de dependências.

Conteúdo

Aplicativos Instalados: ffmpeg, ffplay, ffprobe e qt-faststart
Bibliotecas Instaladas: libavcodec.so, libavdevice.so, libavfilter.so, libavformat.so, libavutil.so, libpostproc.so, libswresample.so e libswscale.so
Diretórios Instalados: /usr/include/libav{codec,device,filter,format,util}, /usr/include/libpostproc, /usr/include/libsw{resample,scale}, /usr/share/doc/ffmpeg-6.0 e /usr/share/ffmpeg

Descrições Curtas

ffmpeg

é uma ferramenta de linha de comando para converter arquivos de vídeo, fluxos de rede de intercomunicação e entrada gerada a partir de uma placa de TV para vários formatos de vídeo

ffplay

é um reprodutor de mídia muito simples e portável que usa as bibliotecas do ffmpeg e a biblioteca SDL

ffprobe

reúne informações a partir de fluxos multimídia e as imprime de forma legível por humanos e máquinas

qt-faststart

move o arquivo de índice para a frente dos vídeos quicktime (mov/mp4)

libavcodec.so

é uma biblioteca que contém os CODECs do FFmpeg (tanto codificação quanto decodificação)

libavdevice.so

é a biblioteca de manuseio de dispositivos do FFmpeg

libavfilter.so

é uma biblioteca de filtros que pode alterar vídeo ou áudio entre o decodificador e o codificador (ou saída gerada)

libavformat.so

é uma biblioteca que contém o manuseio dos formatos de arquivos (código mux e demux para diversos formatos) usados pelo ffplay além de permitir a geração de fluxos de áudio ou vídeo

libavresample.so

é uma biblioteca que contém funções para reamostragem de áudio e vídeo.

libavutil.so

é a biblioteca de utilitários do FFmpeg

libpostproc.so

é a biblioteca de pós-processamento do FFmpeg

libswresample.so

é a biblioteca de reescalonamento de áudio do FFmpeg; ela contém funções para converter formatos de amostra de áudio

libswscale.so

é a biblioteca de reescalonamento de imagens do FFmpeg