2008-12-05 28 views
49

Voglio creare una semplice applicazione server in cui le persone possano connettersi utilizzando un client basato su browser (che farò in seguito) per guardare video in streaming. E voglio usare C#.Come posso trasmettere video in webcam con C#?

Cosa mi serve per acquisire video o immagini rapide tramite una webcam e inviarli tramite la rete?

+0

Per chiunque voglia catturare immagini da WebCam in C# - provare questo articolo - http://www.codeproject.com/KB/miscctrl/webcam_c_sharp.aspx. – kape123

+0

Forse questo aiuterà: - http://sourceforge.net/projects/ispysoftware/ - http://www.ispyconnect.com/ –

risposta

19

Se si desidera un componente "cattura/streamer in una scatola", ce ne sono diversi là fuori come altri hanno menzionato.

Se si desidera eseguire il controllo di livello basso su tutto, è necessario utilizzare DirectShow come indicato da thealliedhacker. Il modo migliore per utilizzare DirectShow in C# è attraverso la libreria DirectShow.Net: include tutte le API COM di DirectShow e include molte utili funzioni di collegamento.

Oltre all'acquisizione e allo streaming, è anche possibile effettuare conversioni in formato di registrazione, audio e video, filtri audio e video dal vivo e un sacco di cose.

Microsoft afferma che DirectShow sta andando via, ma devono ancora rilasciare una nuova libreria o API che fa tutto ciò che fornisce DirectShow. Sospetto che molte delle ultime cose che hanno pubblicato siano ancora DirectShow sotto il cofano. A causa del suo stato in Microsoft, non ci sono un sacco di libri o riferimenti su di esso oltre a MSDN e cosa puoi trovare nei forum. L'anno scorso, quando abbiamo iniziato un progetto che lo utilizzava, il miglior libro sull'argomento era esaurito e costava circa $ 350 per una copia usata!

Questo è il libro: Programming Microsoft DirectShow. Puoi ottenere una nuova copia (al momento di questa pubblicazione) per $ 299 o una copia usata per $ 149 su Amazon!

alt text http://www.lmet.fr/www.lmet.fr/icons/Scans13/Big/9780/73/56/18/213.gif

+2

Quale libro era? – faulty

+4

So che sto rispondendo a una vecchia domanda, ma ho letto le recensioni di Amazon prima di sborsare i soldi per quel libro. È altrettanto orribile come dicono tutti. Acquistare GraphEditPlus e guardare il codice che genera sarebbe un valore migliore per compiti semplici. – dgnorton

+1

Bel tentativo, Mark Pesce – Uri

3

Ho usato VideoCapX per il nostro progetto. Scorrerà come flusso MMS/ASF che può essere aperto dal lettore multimediale. È quindi possibile incorporare il lettore multimediale nella pagina Web.

Se non hai bisogno di molto controllo, o se vuoi provare VideoCapX senza scrivere un codice, prova U-Broadcast, usano VideoCapX dietro la scena.

6

La normale API per questo è DirectShow.

È possibile utilizzare P/Invoke per importare le API C++, ma penso che ci siano già alcuni progetti là fuori che hanno fatto questo.

http://channel9.msdn.com/forums/TechOff/93476-Programatically-Using-A-Webcam-In-C/

http://www.codeproject.com/KB/directx/DirXVidStrm.aspx

per ottenere la parte di streaming, probabilmente si desidera utilizzare DirectShow per applicare un codec di compressione per ridurre il ritardo, allora si può ottenere un flusso e trasmetterlo. Potresti considerare l'utilizzo del multicast per ridurre il carico di rete.

+2

Non si può realmente usare P/Invoke per importare l'API C++ per DirectShow poiché è Basato su COM. È possibile utilizzare il wrapper DirectShow denominato DirectShow.Net. – faulty

4

Si potrebbe utilizzare VideoLAN. VideoLAN funzionerà come un server (oppure puoi avvolgere la tua applicazione C# attorno per un maggiore controllo). Esistono anche wrapper .NET per il visualizzatore che puoi utilizzare e quindi incorporare nel tuo client C#.

1

Se si desidera registrare video da un browser Web, penso che la tua unica opzione sia Flash. Stiamo cercando di fare la stessa cosa. Siamo anche principalmente una casa .NET e non vedo un modo per utilizzare .NET per catturare la webcam _from_within_the_browser_.Tutte le altre soluzioni menzionate qui funzionerebbero probabilmente se si è felici di accontentarsi di un'applicazione desktop

0

Un'altra opzione per lo streaming di immagini da una webcam a un browser è tramite mjpeg. Questa è solo una serie di immagini jpeg supportate dalla maggior parte dei browser moderni come parte del tag. Ecco un server di esempio scritto in C#:

https://www.codeproject.com/articles/371955/motion-jpeg-streaming-server

Questo funziona bene su una LAN, ma non così su internet come MJPEG non è così effcient come altri codec video (H264, VP8 ecc ..)

Problemi correlati