Detectar barras coloridas ffmpeg

0

Existe uma maneira de usar o ffmpeg (ou até mesmo um comando do Linux) para detectar se o vídeo que está sendo processado tem conteúdo real ou apenas barras de cores?

Este é o meu cenário: Eu tenho um sistema que usa o BMD para executar o streaming RTMP. Isso funciona bem, o único problema é que o BMD precisa do modo específico configurado para capturar a entrada, caso contrário, ele só vai cuspir um vídeo com barras de cores em vez da entrada real.

    
por AbrahamSustaita 06.02.2016 / 16:03

1 resposta

2

O que você pode fazer é capturar um quadro das barras de cor da BMD em uma imagem e, em seguida, fazer uma mistura no modo de diferença com o fluxo que é passado por um detector de quadro preto.

Quando o fluxo de entrada e a imagem das barras de cores coincidirem, o ffmpeg exibirá leituras como esta:

[Parsed_blackframe_1 @ 00000000034c67e0] frame:816 pblack:99 pts:417792 t:27.200000 type:P last_keyframe:640

Etapa 1 Gerar imagem de barras de cor

ffmpeg -i rtmp://url -vframes 1 colorbars.jpg

Etapa 2 Analise o fluxo de entrada

ffmpeg -i rtmp://url -loop 1 colorbars.jpg -filter_complex \
      "[0:v][1:v]blend=difference:shortest=1,blackframe" \
      -f null -
    
por 06.02.2016 / 17:47

Tags