Mesclar dois vídeos enquanto pula partes comuns

1

Um cliente tem uma coleção de vídeos tutoriais, todos com a seguinte estrutura:

  1. pré-visualização (ou recapitulação)
  2. intro (sempre idêntico)
  3. parte repetida do vídeo anterior (opcional)
  4. novo conteúdo
  5. Outro

Tenho a tarefa de fundir esses vídeos criando um vídeo para cada 10 vídeos contendo apenas UMA introdução, uma OUTRO e o conteúdo de todos os 10 vídeos.

O problema são partes repetidas variáveis do vídeo anterior que eu não quero duplicar. Minha primeira idéia foi extrair todos os frames (ou somente keyframes) com ffmpeg e mux-los com framemd5. Em seguida, compare o fluxo resultante de md5 para decidir onde o conteúdo repetido será interrompido.

Essa abordagem parece um pouco implacável, pois não posso presumir que o mesmo quadro seja codificado perfeitamente idêntico em ambos os vídeos. A próxima ideia é gerar um histograma para cada quadro e depois combinar a função do histograma entre os vídeos com alguma medida de tolerância (5%?).

Outra ideia era usar o OpenCV e executar o matchTemplate para encontrar imagens semelhantes, mas isso precisaria ser executado em todos os quadros e acho que ele teria problemas de desempenho muito rápidos.

Existem soluções testadas e verdadeiras para este problema? Ou talvez soluções experimentais? Posso gerar um framehistogram com ffmpeg da mesma maneira que o framemd5 funciona?

Alguma ideia de qual técnica o Youtube usa para corresponder conteúdo protegido por direitos autorais em vídeos enviados?

    
por Igor Skoric 19.01.2017 / 13:08

0 respostas