it-swarm.com.de

Wie kann ich ein Webcam-Video mit C # streamen?

Ich möchte eine einfache Serveranwendung erstellen, bei der sich Benutzer über einen browserbasierten Client (den ich später erstellen werde) verbinden können, um Streaming-Video anzusehen. Und ich möchte C # verwenden.

Was brauche ich, um Videos oder schnelle Bilder über eine Webcam aufzunehmen und über das Netzwerk zu senden?

51
The.Anti.9

Wenn Sie eine "Capture/Streamer in a Box" -Komponente wünschen, gibt es mehrere, wie andere bereits erwähnt haben.

Wenn Sie alles unter Kontrolle haben möchten, müssen Sie DirectShow verwenden, wie der Hacker zeigt. Die beste Möglichkeit, DirectShow in C # zu verwenden, ist die Bibliothek DirectShow.Net , die alle DirectShow COM-APIs umschließt und viele nützliche Verknüpfungsfunktionen für Sie enthält.

Neben dem Aufnehmen und Streamen können Sie auch Konvertierungen für das Aufzeichnen, Audio- und Videoformat, Audio- und Video-Live-Filter und vieles mehr durchführen.

Microsoft behauptet, DirectShow sei verschwunden, aber sie müssen noch eine neue Bibliothek oder API veröffentlichen, die alles tut, was DirectShow bietet. Ich vermute, viele der neuesten Dinge, die sie veröffentlicht haben, sind immer noch DirectShow unter der Haube. Aufgrund seines Status bei Microsoft gibt es nicht viele Bücher oder Verweise darauf außer MSDN und was Sie in Foren finden können. Als wir letztes Jahr ein Projekt mit diesem Projekt starteten, war das beste Buch zum Thema - Programmieren von Microsoft DirectShow - vergriffen und ging für eine gebrauchte Kopie auf etwa 350 US-Dollar!

20
CMPalmer

Die übliche API dafür ist DirectShow. 

Sie können P/Invoke verwenden, um die C++ - APIs zu importieren, aber ich denke, es gibt bereits ein paar Projekte, die dies getan haben. 

http://channel9.msdn.com/forums/TechOff/93476-Programmatisch-Verwenden-A-Webcam-In-C/

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

Um den Streaming-Teil abzurufen, möchten Sie wahrscheinlich DirectShow verwenden, um einen Kompressions-Codec anzuwenden, um die Verzögerung zu reduzieren. Anschließend können Sie einen Stream abrufen und ihn übertragen. Sie können die Verwendung von Multicast in Betracht ziehen, um die Netzwerklast zu reduzieren.

7
Excel Kobayashi

Sie könnten einfach VideoLAN verwenden. VideoLAN arbeitet als Server (oder Sie können Ihre eigene C # -Anwendung für mehr Kontrolle umwickeln). Es gibt auch .NET-Wrapper für den Viewer, die Sie verwenden und somit in Ihren C # -Client einbetten können. 

4
Chris Holmes

Ich habe VideoCapX für unser Projekt verwendet. Es wird als MMS/ASF-Stream ausgestrahlt, der vom Mediaplayer geöffnet werden kann. Sie können dann den Media Player in Ihre Webseite einbetten.

Wenn Sie nicht viel Kontrolle benötigen oder wenn Sie VideoCapX ausprobieren möchten, ohne einen Code zu schreiben, versuchen Sie U-Broadcast .

3
faulty

Wenn Sie Videos von einem Webbrowser aus aufnehmen möchten, ist Ihre einzige Option Flash. Wir suchen das Gleiche. Wir sind auch in erster Linie ein .NET-Haus, und ich sehe keine Möglichkeit, .NET zur Erfassung der Webcam _von_in_des_browsers_ zu verwenden. Alle anderen hier genannten Lösungen würden wahrscheinlich gut funktionieren, wenn Sie sich mit einer Desktop-App zufrieden geben

1
gillonba

Eine weitere Option zum Streamen von Bildern von einer Webcam in einen Browser ist Mjpeg. Dies ist nur eine Reihe von JPEG-Bildern, die die meisten modernen Browser als Teil des Tags unterstützen. Hier ist ein Beispielserver in c #:

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

Dies funktioniert gut über ein LAN, aber nicht so gut über das Internet, da mjpeg nicht so effizient ist wie andere Videocodecs (h264, VP8 usw.).

0
mark gamache