Oi Para começar, estou desenvolvendo um programa para determinar o número de carros em um processador barato de baixa potência, como o Intel ATOM Z8350. Obtivemos bons resultados na determinação de números russos em uma imagem estática (até 97%) com bom desempenho sem o uso de redes neurais. A única coisa que resta é pequena - trabalhe com a câmera IP Fig. 1.
Figura 1 Computador Intel ATOM Z83II e câmera IP ATISO FFmpeg é uma biblioteca para criar aplicativos de vídeo ou mesmo utilitários de uso geral que exige todo o trabalho duro do processamento de vídeo, fazendo toda a decodificação, codificação, multiplexação e desmultiplexação para você.
Tarefa : A câmera IP Full HD no padrão h.264 transmite o fluxo RTSP. O tamanho do quadro descompactado é de 1920x1080 pixels, a frequência é de 25 quadros por segundo. É necessário receber quadros decodificados na RAM e salvar a cada 25 quadros no disco.
Neste exemplo, decodificaremos quadros programaticamente. O objetivo é aprender a usar o FFmpeg e comparar ainda mais os resultados obtidos usando a decodificação de hardware. Você verá o FFmpeg - é fácil!
Instalando o FFmpeg : muitas pessoas sugerem a criação do FFmpeg para seu hardware. Sugiro usar
zeranoe builds , o que simplifica bastante a tarefa. É muito importante que os conjuntos
zeranoe incluam suporte ao DXVA2, que será útil mais tarde para decodificação de hardware.
Vamos ao site
https://ffmpeg.zeranoe.com/builds/ e baixamos 2 arquivos compartilhados e de desenvolvimento antes de escolher 32 ou 64 bits. O arquivo dev armazena bibliotecas (.lib) e inclui. O arquivo compartilhado contém as DLLs necessárias que precisarão ser reescritas em uma pasta com o seu programa futuro.
Portanto, crie a pasta ffmpeg na unidade C: \. Reescreveremos os arquivos do arquivo dev.
Conectando o FFmpeg ao Visual Studio 2017: criando um novo projeto. Vá para as propriedades do projeto (Projeto - propriedades). Em seguida, C / C ++ e selecione "Diretórios adicionais para arquivos incluídos". Defina o valor: "C: \ ffmpeg \ dev \ include;". Depois disso, vá para os Diretórios de bibliotecas adicionais do vinculador e defina o valor como "C: \ ffmpeg \ dev \ lib;". Só isso. O FFmpeg está conectado ao nosso projeto.
O primeiro projeto com o FFmpeg: decodificação de vídeo por software e gravação de cada 25 quadros em disco. O princípio de trabalhar com um arquivo de vídeo no FFmpeg é apresentado no diagrama de blocos da Fig. 2
Fig. 2 Diagrama em bloco do trabalho com um arquivo de vídeo.Aqui está o código do projeto C ++ Porque minha câmera IP possui IP 192.168.1.168, a chamada do programa:
decode.exe rtsp://192.168.1.168
Além disso, este exemplo pode decodificar arquivos de vídeo, basta indicar sua localização.
E assim, neste exemplo, aprendemos a decodificar programaticamente arquivos de vídeo e salvar os quadros recebidos em disco. Os quadros são salvos no formato .ppm. Você pode usar o IrfanView 64 ou o GIMP no Windows para abrir esses arquivos.
Conclusão: a decodificação de software do fluxo RTSP Full HD H.264 leva até dois núcleos Intel ATOM Z8350; além disso, a perda de pacotes ocorre periodicamente, devido à decodificação incorreta de parte dos quadros. Este método é mais aplicável à decodificação de arquivos de vídeo gravados, pois a operação em tempo real não é necessária.
No próximo artigo, mostrarei como decodificar o fluxo RTSP no hardware.Arquivar com o projeto
Programa de trabalhoLinks para materiais no FFmpeg:
1. O
tutorial sobre como trabalhar com o FFmpeg, um pouco desatualizado.2.
Várias informações úteis sobre o FFmpeg.3.
Informações sobre o uso das várias bibliotecas fornecidas pelo FFmpeg.