Sobre o projeto

Este repositório é um tutorial educacional para aprender a usar o FFmpeg como biblioteca (libav) para construir programas multimídia. Foi criado como um substituto moderno para tutoriais obsoletos e está disponível em vários idiomas. O conteúdo começa com uma introdução aos fundamentos de mídia, explicando o que são vídeo, áudio, codecs e containers. Em seguida, oferece um curso intensivo sobre o uso da ferramenta FFmpeg na linha de comando, cobrindo operações comuns de vídeo, como transcodificação (converter codecs), transmuxing (alterar containers), transrating (alterar taxas de bits), transsizing (alterar resolução) e streaming adaptativo usando DASH. O núcleo do repositório é a seção "Learn FFmpeg libav the Hard Way", que oferece walkthroughs de código em C. São cobertos: - Capítulo 0: Um programa "hello world" que lê um arquivo de mídia, extrai metadados, decodifica quadros e os salva como imagens em tons de cinza. Explica a arquitetura do FFmpeg libav, incluindo componentes como AVFormatContext, AVStream, AVPacket, AVCodec e AVFrame. - Capítulo 1: Uma explicação sobre sincronização de áudio e vídeo, detalhando timestamps de apresentação (PTS), timebases e como os players de vídeo controlam a renderização dos quadros. - Capítulo 2: Código de remuxing. - Capítulo 3: Código de transcodificação. O tutorial usa Docker como ambiente de desenvolvimento e execução para evitar problemas de compilação e inclui um Makefile para buscar vídeos de teste e executar os exemplos. Embora o código seja escrito em C, o autor observa que os conceitos são facilmente aplicáveis a outras linguagens com bindings para o FFmpeg, como Python e Go.