2015-11-18 10 views
7

Wir verwenden die licode MCU, um aufgezeichnete Videos von Google Chrome auf den Server zu streamen. Es gibt keine zweite Instanz von Google Chrome, die das Feedback verarbeiten kann, und der Server muss dies tun.Wie gehe ich mit Paketverlusten um, wenn ich Video Peer zu Server über WebRTC aufnehme

Eine Sache, die wir erlebt haben, ist, wenn es Paketverlust gibt, werden Rahmen fallengelassen und das Video wird nicht mehr synchronisiert. Dies verursacht eine sehr schlechte Videoqualität.

poor video quality

In ExternalOutput.cpp gibt es eine place, wo es feststellt, dass der aktuelle Datenpaket monoton nicht inkrementiert empfangen hat. Hier können Sie sehen, dass der aktuelle Frame gelöscht und der Suchstatus zurückgesetzt wird.

Ich würde gerne wissen, wie dies zu ändern, so dass es von diesem Paketverlust wiederherstellen kann. Schickt ein NACK-Paket auf der aktuellen Sequenznummer die Lösung? Ich habe auch gelesen, dass es einen Modus gibt, in dem Google Chrome RED-Pakete (redundant) absetzt, um mit dem Paketverlust fertig zu werden.

Antwort

3

Medienverarbeitung Anwendungen hat zwei Haupt verschiedenen Schichten:

  1. Transportschicht (RTP/RTCP)
  2. Codec Schicht

Transportschicht Codec unabhängig ist und mit RTP/RTCP-Pakete Generika befassen.

  1. Jitter Buffer (Handles Paketverzögerungen und Neuordnen)
  2. Generick RTCP Feedbacks (Benachrichtigt Quelle Peer Paket verloren)
: Auf dieser Schicht paar Mechanismen dort kämpfen mit Paket verloren/Verzögerung/Nachbestellung sind

Auf Codec Schicht gibt es auch einige Mechanismen zur Qualitätsverschlechterung zu kämpfen:

  1. Codec Layer RTCP Feedbacks
  2. Forward error correction (FECC/RED)

Licode Mängel überwinden sollten Sie:

  1. Zunächst einmal ist es keine Paketverzögerungen und Neuordnen ignoriert. Also, sollten Sie Mechanismus (Jitter-Puffer) implementieren, die Paket Reodering/Netzwerk-Jitter behandelt und Paket verloren gehen (Wahrscheinlich könnten Sie webrtc/Freeswitch-Mechanismen wiederverwenden)

  2. Wenn Ihre App Paket verloren bestimmt, sollten Sie Feedback senden (RTCP NACK) auf Remote-Peer

  3. auch sollten Sie versuchen, ffmpeg zu handhaben (verwendet Video zum Dekodieren und Speichern sie zur Datei) Dekodierungsfehler und senden FIR (Fast Intra Request)/PLI zu Remote-Peer für Keyframes im Fall anfordern Fehler.

Beachten Sie, dass p.2,3 erfordert eine ordnungsgemäße explizite Verhandlung (über SDP).

Nur nach der Übergabe all dieser Fälle können Sie einen Blick auf FECC/RED werfen, da es schwieriger zu handhaben und zu implementieren ist.

Verwandte Themen