Come codificare i video dalla videocamera Web in H.264 in C #? [chiuso]
Domanda
Come si codifica il video dalla webcam in H.264 in C #?
Di cosa ho bisogno
- MSDN se c'è qualche aiuto in merito.
- Libs / wrapper Open Source per la codifica / decodifica.
- Tutorial e articoli di blog su Come farlo.
Alcuni esempi di come codificare in 3GP o FLV o qualcos'altro con file di dimensioni ridotte sarebbero più che apprezzati.
Soluzione
Dovrai esaminare DirectShow SDK.
La codifica in H.264 non è direttamente possibile, tuttavia ci sono controlli ActiveX commerciali che possono aiutarti. Ma devi capire alcune cose,
DirectShow è un framework di elaborazione audio / video e puoi usare lo strumento di modifica dei grafici per mettere i tuoi dispositivi sul grafico e testarlo. E devi scrivere un codice simile per costruire un grafico, il grafico è una catena di dispositivi / oggetti che interagiscono tra loro per produrre un output finale.
DirectShow può essere utilizzato in .NET, è possibile utilizzare lo strumento GraphEditPlus per creare un grafico e utilizzarlo in .NET, tuttavia dubito che .NET sia il modo migliore perché può causare errori sconosciuti poiché DirectShow è strettamente associato a COM. Se si crea il controllo ActiveX, in C ++ nativo e si utilizza DirectShow per eseguire l'intera registrazione e si utilizza ActiveX in WPF, sarà più stabile ma difficile da programmare.
In genere è necessario il grafico come segue,
Video Source => Demux -> Audio Stream + Video Stream -> MP4Muxer
x264 è open source gratuito e ha un buon MP4Muxer ma non è legale, devi avere licenze di brevetto acquisite per usare H264 nel tuo codice.
In alternativa puoi scegliere tra numerosi controlli commerciali, l'IPP di Intel è finora la migliore implementazione di H264, ma è un po 'complicato metterlo in directshow.
Altri suggerimenti
Di seguito sono riportati 2 esempi di CodeProject per l'acquisizione di video in .NET.
- http://www.codeproject.com/KB/directx/DirXVidStrm.aspx
- http://www.codeproject.com/KB/cs/WebCamService.aspx
Non includono specificamente H.264. Per questo, potresti voler postelaborare il video dopo l'acquisizione, con componenti di terze parti, ad esempio: http://www.elecard.com/products/ prodotti-pc / sdk / codec-NET-sdk /