FFmpeg-6.1.1
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.1.
Informação do Pacote
-
Transferência (HTTP): https://ffmpeg.org/releases/ffmpeg-6.1.1.tar.xz
-
Transferência (FTP):
-
Soma de verificação MD5 da transferência:
341d719415b7f95bb59f5016f2864ac6
-
Tamanho da transferência: 10 MB
-
Espaço em disco estimado exigido: 237 MB (adicionar 1,5 GB
para a suíte/testes FATE; adicionar 792 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
libaom-3.8.1, libass-0.17.1, fdk-aac-2.0.3, FreeType-2.13.2, LAME-3.100, libvorbis-1.3.7,
libvpx-1.14.0, Opus-1.4, x264-20240216, x265-20240216 e NASM-2.16.01 ou yasm-1.3.0
Recomendadas para uso de área de trabalho
alsa-lib-1.2.11, libva-2.20.0, libvdpau-1.5 (com o
correspondente pacote de controlador) e SDL2-2.30.0
Opcionais
Doxygen-1.10.0, Fontconfig-2.15.0, FriBidi-1.0.13, frei0r-plugins-1.8.0, libcdio-2.1.0 (para
identificar e reproduzir CDs), libdrm-2.4.120 (para
entrada “kmsgrab”), libwebp-1.3.2,
opencv-4.9.0, OpenJPEG-2.5.0, GnuTLS-3.8.3,
PulseAudio-17.0, Samba-4.19.5,
Speex-1.2.1, texlive-20230313 (ou install-tl-unx) para documentação PDF e PS,
v4l-utils-1.26.1, Vulkan-Loader-1.3.277, XviD-1.3.7, um ambiente gráfico,
dav1d, Flite,
GSM,
libaacplus, libbluray,
libcaca, libcelt, libdc1394,
libdca,
libiec61883,
libilbc, libmodplug,
libnut (Git checkout),
librtmp,
libssh,
libtheora,
OpenAL, OpenCore AMR,
Srt,
Schroedinger,
TwoLAME,
vo-aaenc,
vo-amrwbenc
e ZVBI
Instalação do FFmpeg
Primeiro, aplique um remendo que adicione uma API necessária para
alguns pacotes construírem:
patch -Np1 -i ../ffmpeg-6.1.1-chromium_method-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-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-openssl \
--disable-vulkan \
--ignore-tests=enhanced-flv-av1 \
--docdir=/usr/share/doc/ffmpeg-6.1.1 &&
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.10.0 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.1.1 &&
install -v -m644 doc/*.txt /usr/share/doc/ffmpeg-6.1.1
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.1.1 &&
install -v -m644 doc/*.ps /usr/share/doc/ffmpeg-6.1.1
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.1.1/api &&
cp -vr doc/doxy/html/* /usr/share/doc/ffmpeg-6.1.1/api &&
find /usr/share/doc/ffmpeg-6.1.1/api -type f -exec chmod -c 0644 \{} \; &&
find /usr/share/doc/ffmpeg-6.1.1/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
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.120 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-libvpx
: Habilita
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.
--disable-vulkan
:
Desabilita Vulkan para a atual versão de Vulkan-Loader-1.3.277 devido a um
conflito de API.
--ignore-tests=...
:
Desabilita testes que falham para executar no BLFS sem os pacotes
opcionais. Atualmente o teste AV1 está desabilitado porque precisa
do dav1d para fazer decodificação AV1 na CPU. O teste pode
funcionar se você tiver uma GPU que consiga decodificar AV1, mas
isso não foi testado.
--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.10.0 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
O suporte para a maioria dos pacotes de dependências exige usar
opções passadas para o conjunto de comandos sequenciais
configure. Veja-se
a saída gerada a partir de ./configure --help para
informações completas relativas a 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.1.1 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
|