Lista de partes traduzidas da série:
- Culinária (você está aqui)
- Compilando com o Emscripten
- Converter avi para mp4
Nesta parte, você aprenderá:
- Por que tudo isso é necessário?
- Como compilar o FFmpeg no Docker
Por que tudo isso é necessário?
As principais tarefas de uma série de publicações são as seguintes:
- Crie um tutorial sobre o uso do Emscripten para compilar bibliotecas C / C ++ em JavaScript (mais detalhado e útil do que anteriormente escrito)
- Nota pessoal
Por que ffmpeg?
O FFmpeg é um projeto de código aberto gratuito que consiste em um extenso conjunto de bibliotecas e programas para processamento de vídeo, áudio e outros arquivos / transmissões multimídia. (da Wikipedia)
Uma biblioteca JavaScript que forneceria esses recursos simplesmente não existe. Se você pesquisar no “ffmpeg.js”, encontrará várias soluções semelhantes ao que vamos fazer:
Essas bibliotecas, é claro, podem ser usadas, mas têm suas desvantagens:
- As versões usadas do FFmpeg e do Emscripten estão obsoletas
- Os projetos não são suportados há muito tempo
Inicialmente, planejei começar a oferecer suporte a uma das duas bibliotecas, mas, como muitas mudanças foram acumuladas ao longo dos anos, decidi fazer tudo do zero, criando simultaneamente um tutorial sobre o uso do Emscripten para compilar uma grande biblioteca C / C ++.
Como compilar o FFmpeg no Docker
Primeiro, clonamos as fontes do FFmpeg e, como o ramo principal é usado para o desenvolvimento, selecionamos o ramo com uma versão específica.
No momento da redação do tutorial, a versão mais recente do FFmpeg é a 4.1.4, por isso vamos usá-lo.
$ git clone --depth 1 --branch n4.1.4 https://github.com/FFmpeg/FFmpeg
--thth 1 é opcional, mas isso acelerará a clonagem, pois não precisamos fazer o download de todas as confirmações.
Após a clonagem bem-sucedida, compile as fontes com o gcc para garantir que tudo funcione.
Claro, você pode pular esta etapa, mas minha experiência diz que é sempre bom tocar no sistema de compilação primeiro. (O FFmpeg usa make padrão, que é mais fácil de portar que o Bazel)
Instruções para compilar e instalar o FFmpeg podem ser encontradas no arquivo INSTALL.md, localizado no diretório raiz:
# Instale o FFmpeg:
1. Digite `. / Configure` para criar a configuração. A lista de opções para configuração pode ser obtida executando `configure - help`.
O `configure` pode ser executado a partir de um diretório que não seja a fonte FFmpeg. Para fazer isso, passe o caminho absoluto para configurar, por exemplo `/ ffmpegdir / ffmpeg / configure`.
2. Agora digite `make` para criar o FFmpeg. Você precisará do GNU Make 3.81 ou superior.
3. Digite `make install` para instalar os binários e bibliotecas.
AVISO
- - -
- Dependências que não são do sistema (por exemplo, libx264, libvpx) são desativadas por padrão.
Como não instalaremos o FFmpeg, apenas as duas primeiras etapas são necessárias.
Ao compilar com o gcc, usaremos o Docker para criar um ambiente que isole todo o processo e atinja sua uniformidade em diferentes máquinas.
Vamos criar um script bash build-with-docker.sh no diretório raiz com o seguinte conteúdo:
#!/bin/bash docker pull gcc:4 docker run -it \ -v $PWD:/usr/src \ gcc:9.1 \ sh -c 'cd /usr/src && ./configure --disable-x86asm && make -j4'
--disable-x86asm precisa ser adicionado quando o ffmpeg solicitar
Execute o script:
$ chmod +x build-with-docker.sh $ ./build-with-docker.sh
Dependendo da velocidade da sua conexão à Internet e do seu hardware, a compilação levará cerca de 10 a 30 minutos.
Observe que você verá muitos avisos, pois o gcc 9.1 é mais rígido que as versões anteriores. Isso é normal.
Se tudo foi concluído com êxito, você pode tentar executar o ffmpeg :
$ ./ffmpeg
Ou
$ docker run -it -v $PWD:/usr/src gcc:9.1 /usr/src/ffmpeg
Você verá algo como:
ffmpeg versão n4.1.4 Copyright 2000–2019 os desenvolvedores do FFmpeg
construído com o gcc 9.1.0 (GCC)
configuração: - disable-x86asm
libavutil 56.22.100 / 56.22.100
libavcodec 58.35.100 / 58.35.100
libavformat 58.20.100 / 58.20.100
dispositivo de biblioteca 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
Codificador de áudio e vídeo hiper-rápido
uso: ffmpeg [opções] [[opções de infile] -i infile] ... {[opções de outfile] outfile} ...
Use -h para obter ajuda completa ou, melhor ainda, execute 'man ffmpeg'
Na próxima parte, começaremos a compilar o FFmpeg com o Emscripten.