2010-09-29 7 views
8

Ich weiß nicht viel über h.264, aber die Sache ist, dass ich dieses Video in h.264 in einem mp4-Container habe, über den ich streamen möchte UDP.Streaming eines h.264 codierten Videos über UDP

Meine Frage ist einfach, gibt es irgendwelche Verbesserungen, die ich vielleicht während der Codierung des Videos tun kann, so dass es ziemlich tolerant zu einigen "leichten" Paketverlust kommt?

Ich weiß, dass komprimiertes Video in der Regel einen Keyframe alle N Frames hat und dann dazwischen die Deltas sendet. Ich kann mir vorstellen, dass h.264 viel komplexer sein sollte und daher ist es vielleicht nicht so einfach.

Um genauer zu sein, habe ich einige Experimente gemacht und festgestellt, dass nur 1024 Bytes aus einem Strom von Video zu entfernen, ich es komplett "unspielbar" von dem Punkt des Verlustes und weiter machen.

Was ich möchte ist, dass es Lichtverluste so toleriert, ist es möglich?

Dank

Nelson

Antwort

10

Es hängt davon ab, welche Daten Sie verlieren. Einige Daten im H264-Stream sind keine Daten, die verloren gehen können. Wenn zum Beispiel Ihr Experiment, bei dem Sie 1024 Byte gelöscht haben, die ersten 1024 Bytes waren, die Sie gesendet haben, haben Sie wahrscheinlich den Sequenzparametersatz und den Bildparametersatz (SPS/PPS) fallen lassen interpretieren Sie die eingehenden Informationen. Sie können wahrscheinlich auch nicht einfach 1024 Bytes aus dem Stream löschen. typischerweise ist H264 paketiert, so dass irgendwie nichts passieren würde.

Also H264 enthält einige kleine Daten, die wirklich nicht "verwerfbar" sind; Viele der Streaming-Protokolle wie RTSP machen dies deutlich, indem Sie ausdrücklich sagen, dass Sie diese Art von Informationen nicht über den verlustbehafteten Transportkanal senden sollten, sondern stattdessen während des SDP-Austauschs (was über TCP geschieht).

Was die Verlusttoleranz angeht, hat H264 Funktionen, die die Verlusttoleranz unterstützen sollen (ASO, FMO usw.), aber in der Praxis unterstützen die meisten Encoder diese nicht. Wenn du kannst, würde ich x264 verwenden; Ihre Konfiguration mit niedriger Latenzzeit funktioniert angeblich sogar mit Paketverlusten von bis zu 20% oder mehr gut. Wenn Ihr H264 bereits codiert ist, gibt es nicht viel zu tun. Dein Video ist bereits verschlüsselt und du musst es so wie es ist streamen.

Verwandte Themen