📺 Criei uma Biblioteca Dinâmica com C++ para a API do FFmpeg em C para facilitar a integração para aplicativos gráficos e com mais velocidade.
ffpp
é uma biblioteca dinâmica escrita em C++ com API para a maioria das tarefas principais com FFmpeg. Muito mais rápida para interfaces gráficas do que usar processos.
Executando no Windows.
Uso no Windows
Requer Clang
Invoke-WebRequest -Uri "https://bit.ly/libffppwin" -OutFile "libffppwin.rar"
Extraia o
.rar
Entre na pasta
cd .\libffppwin
- Crie um código básico, exemplo:
main.cpp
#include "ffpp/ffpp.hpp" #include <memory> int main(){ auto ffpp = std::make_unique<FFPP>(); std::cout << "Duração: " << ffpp->ffpp_info(FFPP_INFO::DURATION, "video.mp4") << '\n'; }
Se quiser, use este vídeo como exemplo: video.mp4
- Compile e execute:
# PowerShell pwsh build.ps1 main.cpp # Ou mais arquivos # Ou: Windows [PowerShell](https://terminalroot.com.br/tags#powershell) powershell build.ps1 main.cpp # Ou mais arquivos # Ou diretamente .\build.ps1 main.cpp # Ou mais arquivos
Se o Windows Defender bloquear a execução, permita o script:
pwsh -ExecutionPolicy Bypass -File build.ps1 main.cpp # Ou mais arquivos
O script build.ps1
compila e executa o binário gerado. A saída fornece, por exemplo, a duração do vídeo: Duração: 00:00:05
Se quiser baixar o libffmpeg e compilar a dll do zero, veja este arquivo: build-win.md.
No GNU/Linux
Dependências:
No Arch:
sudo pacman -S gcc ffmpeg make cmake pkg-config git
No Debian/Ubuntu/Mint:
sudo apt install build-essential ffmpeg make cmake pkg-config git
Compilar e instalar
Execute todos os comandos abaixo:
git clone https://github.com/terroo/ffpp cd ffpp cmake . -B build cmake --build build sudo cmake --install build # Importante após a instalação # Algo como: export LD_LIBRARY_PATH=/usr/local/lib # Mas para todo o sistema: echo /usr/local/lib | sudo tee /etc/ld.so.conf.d/ffpp.conf sudo ldconfig
Crie um código básico, exemplo: main.cpp
#include <ffpp/ffpp.hpp> #include <memory> int main(){ auto ffpp = std::make_unique<FFPP>(); std::cout << "Duração: " << ffpp->ffpp_info(FFPP_INFO::DURATION, "video.mp4") << '\n'; }
Se quiser, use este vídeo como exemplo: video.mp4
Compile e execute:
g++ main.cpp -lavformat -lavcodec -lavutil -lswscale -lffpp ./a.out
Exemplo de saída:
Duração: 00:00:05
.
Exemplos da API
Assumindo que você criou o objeto no heap (auto ffpp = std::make_unique<FFPP>();
).
01. Converter MP4
para WMV
:
ffpp->ffpp_convert("video.mp4", "new.wmv");
Converte apenas entre extensões de vídeo:
.mp4
,.flv
,.wmv
e.mov
02. Extrair quadros:
ffpp->ffpp_extract_frames("video.mp4", "my_frames_dir");
Imagens
.ppm
serão geradas na pasta fornecida (my_frames_dir/
).
03. Obter informações de um vídeo:
std::cout << "Duração: " << ffpp->ffpp_info(FFPP_INFO::DURATION, "video.mp4") << '\n'; std::cout << "Taxa de bits: " << ffpp->ffpp_info(FFPP_INFO::BITRATE, "video.mp4") << '\n'; std::cout << "FPS: " << ffpp->ffpp_info(FFPP_INFO::FPS, "video.mp4") << '\n'; std::cout << "Frequência do áudio: " << ffpp->ffpp_info(FFPP_INFO::AUDIO_FREQUENCY, "video.mp4") << '\n'; std::cout << "Resolução: " << ffpp->ffpp_info(FFPP_INFO::RESOLUTION, "video.mp4") << '\n';
04. Cortar um vídeo de um tempo até um certo comprimento:
ffpp->ffpp_cut("video.mp4", "00:00:10", 6, "output.mp4");
O corte começa após 10 segundos do vídeo e dura 6 segundos.
Top comments (0)