2009-04-24 16 views
1

Zuerst einige Hintergrund:
Ich entwickle eine Silverlight 3-Anwendung und möchte Unterstützung für Live-Streaming (Webcam + Mikrofon als Eingabe) hinzufügen. Leider kann Silverlight nicht auf eine Webcam oder ein Mikrofon selbst zugreifen. Daher muss ich eine eigenständige Anwendung zum Einrichten des Medienstreams erstellen. Ich denke, dass Silverlight am besten mit Microsoft-Technologie funktionieren würde, deshalb möchte ich das ASF-Format mit WMV/WMA-Codierung verwenden.Live-Streaming mit DirectShow und Windows Media Format SDK

Nach einiger Forschung, hier ist das, was ich denke, was ich tun konnte:

  • Es scheint, ist es möglich, sowohl die Webcam und Mikrofon-Eingang mit Directshow zu erfassen und dann einen „Strom“ verbinden sie zu.
  • Um den Stream zu codieren, muss ich ihn wahrscheinlich an die Windows Media Format SDK-Bibliotheken übergeben (MSDN-Dokumentation beschreibt die Verwendung von DirectShow mit WM ASF Writer).
  • Ich denke, es sollte dann möglich sein, etwas wie "Network Sink" zu verwenden, um den ASF-Stream zu übertragen (ohne es auf die Festplatte zu schreiben).
  • Ich denke, dass die Verbindung viele Clients zu dem Stream ziemlich schwer auf Bandbreite wäre, also sollte ich wahrscheinlich den Stream an einen Server senden und es von dort aus senden. Ich weiß einfach nicht, ob es möglich ist, eine Kombination von ASF Reader/Writer zu verwenden, um den Stream durch den Server zu "leiten". Ich weiß auch nicht, ob ich Multicasting verwenden könnte, um ein ähnliches Ergebnis zu erzielen.

Ich plane, C# zu verwenden, obwohl dies wahrscheinlich als ich ohnehin einige Wrapper für C++ Bibliotheken verwenden wird nicht viel Unterschied machen müssen (wie DirectShow.Net oder SlimDX).

Leider habe ich praktisch keine Erfahrung mit dem Umgang mit Medienströmen. Also meine erste Frage ist, ist es überhaupt möglich, Streaming in der von mir beschriebenen Weise zu machen?

Und wenn es möglich ist, ist es eine sinnvolle Art oder sollte ich erwägen, einige verschiedene Bibliotheken/Frameworks zu verwenden?

Antwort

1

Während DShow und/oder WMF SDK Ihnen die größte Flexibilität bietet, wenn Sie nur das Ziel haben, Video/Audio zu Silverlight zu streamen, können Sie etwas wie Windows Media Encoder 9 verwenden oder Sie können den neuen Expression Encoder verwenden. Beide unterstützen das Streaming von Live-Webcam und Mikrofon zu einem Windows Media Server-Publishingpoint oder können den Stream auf einem lokalen Port hosten. Beide haben ein SDK, das über .NET verfügbar ist (WME verwendet COM-Interop und Encoder hat eine native .NET-API). Dieser Stream ist mit Silverlight und Windows Media Player kompatibel.