Ein h.264-codiertes Video über UDP streamen

8

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

Meine Frage ist einfach, gibt es irgendwelche Verbesserungen, die ich beim Codieren des Videos machen kann, so dass es ziemlich tolerant gegenüber einem "leichten" Paketverlust ist?

Ich weiß, dass komprimierte Videos in der Regel alle N Frames einen Keyframe haben und dann dazwischen die Deltas. Ich kann mir vorstellen, dass h.264 viel komplexer sein sollte und deshalb ist es vielleicht nicht so einfach.

Um genau zu sein, habe ich ein paar Experimente gemacht und festgestellt, dass ich nur 1024 Bytes aus einem Video-Stream entferne und sie vom Punkt des Verlusts an komplett "unspielbar" mache.

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

Danke

Nelson

    
Bilthon 29.09.2010, 18:35
quelle

1 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 es irgendwie nicht passieren würde.

Also enthält H264 einige kleine Daten, die wirklich nicht "verwerfbar" sind; Viele der Streaming-Protokolle wie RTSP machen dies deutlich, indem Sie ausdrücklich angeben, 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 betrifft, 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 codiert und du musst es so wie es ist streamen.

    
kidjan 10.11.2010, 19:40
quelle

Tags und Links