Pergunta

O cenário é este: Meu aplicativo cliente do Windows obtém frames codificados em H264 de uma fonte de rede, sem um contêiner, de uma forma personalizada (protocolo proprietário).O formato dos quadros é conhecido.Preciso decodificar os frames e exibir o vídeo.É necessário que a reprodução seja perfeita durante o streaming em HD, mas tenha uma opção de baixa latência para outros cenários.

Atualmente, eu uso o libavcodec do ffmpeg para decodificar os frames e, em seguida, exibo-os manualmente na tela com StretchBlt.Estamos considerando uma mudança para a Media Foundation, mas não está claro para mim - é possível ter uma fonte que não use um contêiner?em caso afirmativo, preciso criar um personalizado?

Alternativas ao uso do Media Foundation também são bem-vindas.Meu principal problema com o método que uso atualmente é que o desempenho não é bom o suficiente, especialmente para vídeo HD.

Foi útil?

Solução

Não vejo você mencionar que precisa especificamente de qual API Media Foundation, então sugiro DirectShow, com o qual você pode fazer:

  • fonte personalizada, consulte Amostra de filtros push de origem
  • decodificador H.264, padrão com Windows 7 (semelhante ao Media Foundation) ou de terceiros (escolha entre alguns)
  • renderizador de vídeo como EVR (compartilhado com Media Foundation) ou versões anteriores
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top