Como codificar o vídeo da câmera web para H.264 em C#? [fechado
Pergunta
Como você codifica o vídeo da webcam para H.264 em C#?
O que eu preciso
- MSDN Se houver alguma ajuda nisso.
- Libs/invólucros de código aberto para codificação/decodificação.
- Tutoriais e artigos de blog sobre como fazê -lo.
Alguns exemplos de como codificar em 3GP ou FLV ou algo mais com tamanho de arquivo baixo seriam mais do que apreciados.
Solução
Você precisará procurar no DirectShow SDK.
A codificação no H.264 não é diretamente possível, no entanto, existem controles comerciais ActiveX que podem ajudá -lo. Mas você precisa entender poucas coisas,
O DirectShow é uma estrutura de processamento de áudio/vídeo e você pode usar a ferramenta de edição gráfica para colocar seus dispositivos no gráfico e testá -lo. E você deve escrever um código semelhante para criar o gráfico, o gráfico é a cadeia de dispositivos/objetos que interagem entre si para produzir saída final.
O DirectShow pode ser usado no .NET, você pode usar a ferramenta GrapheditPlus para criar um gráfico e usá -lo no .NET, no entanto, duvido que o .NET seja melhor, porque pode levar a erros desconhecidos, pois o DirectShow está intimamente obrigado ao COM. Se você criar controle ActiveX, no C ++ nativo e usar o DirectShow para fazer gravação inteira e usar o ActiveX no WPF, isso será mais estável, por mais difícil de programar.
Normalmente você precisará de gráfico como seguinte,
Video Source => Demux -> Audio Stream + Video Stream -> MP4Muxer
O X264 é de código aberto gratuito e possui um bom MP4Muxer, mas não é legal, você deve ter licenças de patentes adquiridas para usar o H264 no seu código.
Alternativas é que você pode ir com muitos controles comerciais, o IPP da Intel é a melhor implementação do H264 até agora, mas é pouco complicado colocá -lo no DirectShow.
Outras dicas
Abaixo estão 2 amostras do CodeProject para captura de vídeo no .NET.
- http://www.codeproject.com/kb/directx/dirxvidstrm.aspx
- http://www.codeproject.com/kb/cs/webcamservice.aspx
Eles não incluem H.264 especificamente. Para isso, você pode querer pós-processo do vídeo depois de capturar, com componentes de terceiros, por exemplo:http://www.elecard.com/products/products-pc/sdk/codec-.net-sdk/