FFmpeg: seu poderoso ajudante de vídeo / áudio em seu aplicativo

Conteúdo

Este artigo foi publicado como parte do Data Science Blogathon

O nome é inspirado em MPEG, que significa Moving Picture Expert Group. FF significa Fast Forward. O grupo MPEG é a aliança de grupos de trabalho por trás do estabelecimento de muitos dos padrões de vídeo essenciais de hoje., incluindo formato MP4, com o qual estamos todos familiarizados.

Resultados

  1. O que é FFmpeg?
  2. Por que as pessoas usam FFmpeg?
  3. Como configurar o FFmpeg no Windows, Ubuntu e macOS.
  4. Bibliotecas estão disponíveis no FFmpeg para manipulações de mídia.
  5. Ferramentas que o FFmpeg vem com para aplicativos de linha de comando.
  6. Uso e exemplos para FFprobe e FFplay.

Por que as pessoas usam FFmpeg?

É frequentemente referido como o canivete suíço da transcodificação ou streaming de mídia.. Podemos usar o FFmpeg para realizar muitas funções. O código é escrito em linguagem C e otimizado para melhor desempenho. Seus comandos são simples de executar. Assim que estiver familiarizado com os conceitos, é muito flexível para todos os filtros e opções que você pode usar para atender às suas necessidades.

FFmpeg suporta uma ampla gama de códigos, formatos, dispositivos e protocolos, tornando-o uma escolha ideal como um mecanismo de transcodificação. Ao contrário de muitos projetos descontinuados, ainda está em desenvolvimento ativo por mais de 20 anos. Existe uma grande comunidade de desenvolvedores, usuários e colaboradores desenvolvendo constantemente novos recursos e correções.
FFmpeg tem sido usado no processamento central para plataformas de vídeo como YouTube e iTunes. A maioria de nós usa um reprodutor de mídia como o VLC para reproduzir arquivos de vídeo. VLC usa bibliotecas FFmpeg como su núcleo. Alguns editores de vídeo e aplicativos móveis também usam o FFmpeg sob o capô.

Configurando FFmpeg no Windows, Ubuntu e macOS

Existem algumas coisas que você deve saber antes de configurar o FFmpeg. Não existe uma versão oficial para nenhum sistema operacional. Mas é um projeto de código aberto, que você pode obter do código-fonte do FFmpeg na internet. Portanto, você pode escolher criá-lo você mesmo a partir do código-fonte. Você pode baixar um instantâneo do código-fonte atual aqui ou faça um pagamento de seu repositório git e siga as instruções para compilá-lo em sua máquina. Isso pode ser um pouco complexo e demorado e pode exigir que você entenda e escolha algumas opções de configuração. Também pode ser necessário instalar ferramentas e compiladores adicionais no início. Então, a menos que você tenha um bom motivo para construí-lo sozinho, você pode não querer ir por este caminho.

Em seu lugar, você pode escolher baixar e instalar um pacote FFmpeg pré-compilado para o seu sistema operacional. Existem duas maneiras de configurar esses binários pré-compilados. Se você tiver um gerenciador de pacotes como APT no Ubuntu e Homebrew no macOS, é mais fácil de usar porque se encarrega de baixar o FFmpeg e suas dependências.

Vamos manter as coisas o mais simples possível e escolher a maneira mais simples de começar. Os procedimentos abaixo mostram como você pode configurar usando pacotes pré-compilados.

Mac OS

No macOS, a maneira mais fácil de instalar o FFmpeg é através do Homebrew. Certifique-se de ter instalado o Homebrew em seu macOS, ou você pode continuar este tutorial sobre como instalar o Homebrew.
Estamos usando macOS 11.4 neste caso.

  • Abra o Terminal e digite brew — version . Você deve ver a versão preparada impressa no Terminal se o Homebrew for instalado com sucesso.
1cucofunxeyjimaenwsuefq-6213099
Versão do Brew no macOS
  • Para macOS na arquitetura x86, use o comandobrew install ffmpeg enquanto para M1, use o comando aarch arm64 brew install ffmpeg .
17yvx9lrfkwi9kbpydhkojg-6811127
Baixe e instale as dependências necessárias
  • Depois que a instalação for concluída, Você pode digitar ffmpeg -version no Terminal. Se a versão FFmpeg for impressa, significa que o FFmpeg foi instalado com sucesso.
195-zjmk8ldxmvcmriaogma-5442168

janelas

Ao contrário do APT no Ubuntu e Homebrew no macOS, não há gerenciador de pacotes conhecido no Windows, que você pode usar para instalar rapidamente o FFmpeg. Para Windows, você precisa desabilitá-lo e configurá-lo manualmente.

Existem 4 Variantes de compilação do Windows FFmpeg disponíveis que podem ser encontradas aqui:

  1. git full – construído a partir de um branch master com um grande conjunto de bibliotecas.
  2. git essentials – construído a partir de um branch master com bibliotecas comumente usadas.
  3. release full – construído a partir do último ramo da versão com um grande conjunto de bibliotecas.
  4. release essentials – construído a partir do último ramo da versão com bibliotecas comumente usadas.

Usaremos fundamentos de lançamento do FFmpeg em nosso caso.

  • Baixe o básico da versão FFmpeg aqui.
  • Extraia os arquivos para um local de onde você os usará no futuro. No meu caso, Eu os coloquei no meu E Drive.
1zkspmfaxhfzot8bpkx078g-8508900
  • Dentro de compartimento A pasta contém os executáveis ​​que queremos.
17wmyn89jpbnnzdkmac-sgq-9018667
  • Adicionar compartimento pasta a Variável da rota do ambiente do Windows para que possamos executar esta ferramenta sem ter que especificar o caminho completo a cada vez. Olhe para variáveis ​​ambientais na barra de pesquisa e clique Variáveis ​​ambientais…
1m-rbx_dnbqtqymmmvfm15a-1528972
  • Clique em Caminho sobre Variável de usuário, dar um click Novo, e cole o caminho completo do compartimento Arquivo.
1r8dgzk3ok08cqva5bnre9w-7645832
  • Aberto Prompt de comando e tipo ffmpeg -version . Se você ver que a versão do FFmpeg está impressa, significa que o FFmpeg foi instalado com sucesso. Nós também podemos verificar ffprob -version e ffplay -version .
1ft5c0qnpv-xp6nkvuifx2w-1381098

Bibliotecas FFmpeg

O FFmpeg tem várias bibliotecas valiosas que você pode usar diretamente do código do seu aplicativo. Cada biblioteca contém diferentes funções relacionadas a uma área particular.

Algumas das bibliotecas famosas são:

  1. libavcodec: contém todos os codificadores e decodificadores que o FFmpeg suporta.
  2. libavformat: tem todos os muxers e demuxers para trabalhar com vários formatos de contêiner.
  3. libavfilter: Consiste em muitos filtros que você pode usar para modificar o áudio ou vídeo de acordo com os requisitos.
  4. libavdevice: suporta vários dispositivos de entrada e saída diferentes.
  5. libavutil: ajuda a programação de multimídia portátil.
  6. libswscale: executa escalonamento de imagem altamente otimizado, espaço de cores e operações de conversão de formato de pixel.
  7. libswresample: realiza operações de reamostragem, remixagem e conversão de formato de amostra de áudio altamente otimizado.

Ferramentas FFmpeg

Além de bibliotecas que as bibliotecas podem usar em outros aplicativos, o pacote FFmpeg contém algumas ferramentas por conta própria.

Algumas das ferramentas são:

  1. FFmpeg: motor de transcodificação principal. Frequentemente invocado a partir de uma linha de comando ou outro processo.
  2. ffplay: uma ferramenta mínima para reproduzir áudio ou vídeo.
  3. ffprobe: inspeção rápida da mídia para extrair informações valiosas, como quantos streams existem na mídia, a taxa de quadros de um vídeo, etc.

Exemplos e uso de FFprobe

Usar

ffprobe [OPTIONS] [INPUT_FILE]

  • man ffprobe– Veja o manual.
  • ffprobe -h– Ajuda de amostra incluída.
  • -v error– Oculte os registros a menos que haja um erro.
  • -show_format– Mostrar metadados de vídeo formatados usando Tag.
  • show_streams– Mostra todos os streams do arquivo (vídeo e áudio).
  • -print_format - Imprimir metadados em um formato específico (CSV / XML / JSON).
  • -select_streams
  • -show_entries stream=- Mostra apenas a entidade específica e suas dependências aninhadas.
  • -show_entries stream= default-noprint_wrappers=1- Mostra apenas a entidade específica.
  • Você pode aprender mais sobre como usar o FFprob aqui.

    Exemplos básicos

    $ ffprobe -v error -show_format -show_streams input.mp4
    Saída:
    [STREAM]
    índice = 0
    codec_name = h264
    codec_long_name = H.264 / Golpe / MPEG-4 AVC / Parte MPEG-4 10
    perfil = alto
    codec_type = video
    codec_time_base = 1/50
    codec_tag_string = avc1
    codec_tag = 0x31637661
    largura = 320
    altura = 240
    has_b_frames = 2
    sample_aspect_ratio = 1:1
    display_aspect_ratio = 4:3
    pix_fmt = yuv420p
    nível = 13
    intervalo_de_ cores = N / A
    color_space = desconhecido
    color_transfer = desconhecido
    color_primaries = desconhecido
    chroma_location = left
    timecode = N / A
    refs = 4
    is_avc = 1
    nal_length_size = 4
    id = N / A
    r_frame_rate = 25/1
    avg_frame_rate = 25/1
    time_base = 1/12800
    start_pts = 0
    start_time = 0,000000
    duration_ts = 384000
    duração = 30,000000
    bit_rate = 34761
    max_bit_rate = N / A
    bits_per_raw_sample = 8
    nb_frames = 750
    nb_read_frames = N / A
    nb_read_packets = N / A
    DISPOSIÇÃO:padrão = 1
    DISPOSIÇÃO:dub = 0
    DISPOSIÇÃO:original = 0
    DISPOSIÇÃO:comentário = 0
    DISPOSIÇÃO:letras = 0
    DISPOSIÇÃO:karaokê = 0
    DISPOSIÇÃO:forçado = 0
    DISPOSIÇÃO:deficiente auditivo = 0
    DISPOSIÇÃO:visual_impaired = 0
    DISPOSIÇÃO:clean_effects = 0
    DISPOSIÇÃO:attach_pic = 0
    MARCAÇÃO:linguagem = e
    DIA:handler_name = VideoHandler
    [/STREAM]
    [STREAM]
    índice = 1
    codec_name = aac
    codec_long_name = AAC (Codificação de áudio avançada)
    perfil = LC
    codec_type = audio
    codec_time_base = 1/44100
    codec_tag_string = mp4a
    codec_tag = 0x6134706d
    sample_fmt = fltp
    sample_rate = 44100
    canais = 1
    channel_layout = mono
    bits_per_sample = 0
    id = N / A
    r_frame_rate = 0/0
    avg_frame_rate = 0/0
    time_base = 1/44100
    start_pts = -1024
    start_time =-0.023220
    duration_ts = 1324024
    duração = 30,023220
    bit_rate = 56517
    max_bit_rate = N / A
    bits_per_raw_sample = N / A
    nb_frames = 1293
    nb_read_frames = N / A
    nb_read_packets = N / A
    DISPOSIÇÃO:padrão = 1
    DISPOSIÇÃO:dub = 0
    DISPOSIÇÃO:original = 0
    DISPOSIÇÃO:comentário = 0
    DISPOSIÇÃO:letras = 0
    DISPOSIÇÃO:karaokê = 0
    DISPOSIÇÃO:forçado = 0
    DISPOSIÇÃO:deficiente auditivo = 0
    DISPOSIÇÃO:visual_impaired = 0
    DISPOSIÇÃO:clean_effects = 0
    DISPOSIÇÃO:attach_pic = 0
    MARCAÇÃO:linguagem = e
    DIA:handler_name = SoundHandler
    [/STREAM]
    [FORMATO]
    filename = input.mp4
    nb_streams = 2
    nb_programs = 0
    format_name = mov,mp4, m4a,3gp,3g2, mj2
    format_long_name = QuickTime / MOV
    start_time =-0.023220
    duração = 30.024000
    tamanho = 368644
    bit_rate = 98226
    probe_score = 100
    MARCAÇÃO:major_brand = isom
    MARCAÇÃO:minor_version = 512
    MARCAÇÃO:marca_compatível = isomiso2avc1mp41
    MARCAÇÃO:title = Dicas do FFprobe
    MARCAÇÃO:encoder = Lavf56.15.101
    [/FORMATO]
    • Do exemplo acima, se você só quer duration=30.024000 .
    $ ffprobe -v error -show_entries format = duration -of default = noprint_wrappers = 1 input.mp4
    Saída: tamanho = 368644
    • Se você quer apenas o valor sem chave.
    $ ffprobe -v error -show_entries format = size -of default = noprint_wrappers = 1:nokey = 1 input.mp4
    Saída: 368644
    • Obtendo largura e altura (resolução) De video.
    $ ffprobe -v error -select_streams v:0 -show_entries stream = height,largura -de csv = s = x:p = 0 input.mp4
    Saída: 1280x 720

    Uso e exemplos de FFplay

    Usar

    ffplay [OPTIONS] [INPUT_FILE]

    • man ffplay- Veja o manual.
    • ffplay -h- Ajuda de amostra incluída.
    • ffplay - Reproduza o vídeo em tela inteira.
    • -x -y - Reproduza o vídeo com um tamanho específico de pop-ups de altura e largura no centro. Irá preencher automaticamente o espaço extra entre a área do vídeo e a área da janela se a relação de aspecto da janela emergente e do vídeo forem diferentes.
    • -noborder- Esconder a barra de título enquanto reproduz vídeos em janelas pop-up.
    • -[top/left/bottom/right] - Faça pop-up em coordenadas específicas. Por padrão, aparecerá no centro da tela.

    Você pode aprender mais sobre como usar o FFplay aqui.

    Exemplos básicos

    • Reproduza um arquivo de vídeo chamado video.mp4 em tela inteira.
    $ ffplay video.mp4
    • Reproduza um arquivo de vídeo em uma janela pop-up com tamanhos de 600 larguras, 600 alto e sem barra de título.
    $ ffplay video.mp4 -x 600 -e 600 -noborder
    1xn2_esngyfgnieo0zaf8fg-2510588
    • Reproduza um arquivo de vídeo em uma janela pop-up no canto superior esquerdo.
    $ ffplay video.mp4 -x 600 -e 600 -noborder -top 0 -deixou 0
    1vo6spqx-apam4u8fpvhylq-5692967

    conclusão

    Cobrimos todos os fundamentos do FFmpeg. Sinta-se à vontade para ler sua documentação oficial aqui se você quiser ter um entendimento mais profundo!

    Referências

    Sobre o autor:

    Este artigo foi escrito por Han Sheng, um desenvolvedor de aplicativos AI Full Stack da Cameron Highlands, Malásia. Apaixonado por o aprendizado profundo, visão computacional e também dispositivos Edge. Fiz vários aplicativos da web / Dispositivos móveis com tecnologia de IA para ajudar os clientes a resolver problemas do mundo real. Sinta-se à vontade para ler sobre isso o portfólio dele.

A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.

Datapeaker