Frage

Das Szenario lautet wie folgt: Meine Windows-Client-App erhält H264-codierte Frames von einer Netzwerkquelle ohne Container auf benutzerdefinierte Weise (proprietäres Protokoll).Das Format der Frames ist bekannt.Ich muss die Frames dekodieren und das Video anzeigen.Es ist erforderlich, dass die Wiedergabe während des HD-Streamings einwandfrei ist, für andere Szenarien jedoch eine Option mit geringer Latenz verfügbar ist.

Derzeit verwende ich den libavcodec von ffmpeg, um die Frames zu dekodieren, und zeige sie dann manuell mit StretchBlt auf dem Bildschirm an.Wir erwägen einen Wechsel zu Media Foundation, aber mir ist nicht klar - ist es möglich, eine Quelle zu haben, die keinen Container verwendet?Wenn ja, muss ich eine benutzerdefinierte erstellen?

Alternativen zur Verwendung von Media Foundation sind ebenfalls willkommen.Mein Hauptproblem bei der Methode, die ich derzeit verwende, ist, dass die Leistung nicht gut genug ist, insbesondere für HD-Videos.

War es hilfreich?

Lösung

Ich sehe nicht, dass Sie erwähnen, dass Sie speziell benötigen oder welche Media Foundation-API, daher würde ich DirectShow vorschlagen, mit dem Sie dies tun können:

  • Benutzerdefinierte Quelle, siehe Beispiel für Push-Quellfilter
  • H.264-Decoder, Standard mit Windows 7 (ähnlich wie Media Foundation) oder Drittanbietern (Auswahl zwischen einigen)
  • Video-Renderer wie EVR (für Media Foundation freigegeben) oder ältere Versionen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top