So senden Sie MPEGTS streams über UDP

Ich bin die Entwicklung einer Echtzeit-video-streaming-system, das zusammengesetzt ist grundsätzlich von einem server und mehreren clients.

Für jetzt, lasst uns ignorieren, wie Pakete weitergeleitet werden zwischen dem server und den clients, konzentrieren wir uns nur auf , wie der server senden kann, ein MPEGTS stream über UDP-Pakete.

Den stream codiert ist MPEGTS-format.

Was ich versuche zu tun, ist die Lektüre einige Pakete (die wichtigste Frage ist "wie viele?") und encapsulating diese in UDP-Paketen. Das Ziel (client) liest diese UDP-Pakete und leiten Sie zu VLC, die in der Lage ist zu spielen, MPEGTS-Netzwerk-streams durch das Lesen von UDP-Paketen.

Wenn ich senden nur video-Paketen, funktioniert alles einwandfrei, anstelle, wenn ich versuche, Kapseln in der gleichen UDP-Paket, beide, einige video-Pakete und einige audio-Pakete, VLC ist nicht in der Lage zu entschlüsseln und Abspielen des Streams.
Ich habe irgendwo gelesen, dass jedes UDP-Paket sollte enthalten 7 TS-Pakete, aber leider auch wenn ich die Einhaltung dieser Regel, wird VLC nicht decodieren des Streams korrekt.

Hier ist ein Beispiel-code von meinem Programm: http://pastebin.com/evMi6FkY

Wie sollte ich die Kapseln MPEGTS-Pakete in UDP-Pakete?

Dank!

Beachten Sie, dass vlc hat einen bug, wo es oft nicht spielen eine udp-stream, wenn es keine @ in der url, obwohl die url nicht über einen Benutzernamen/Passwort. Having said, die, als nicht mehr als 8 188-byte ts-Pakete passen in ein udp-Paket, können Sie nicht mehr. (weniger ist kein problem). Und ein udp-Paket sollte mit dem start des ts-Pakets, D. H. das erste byte sollte 0x47. Verwenden Sie wireshark, um die Daten zu verifizieren.
Hast du dein problem lösen? Ich habe video-streaming mit dvblast, senden Sie Pakete, die über UDP, und Sie erhalten mit ffmpeg. Sogar so einstellen, dass UDP-Paketgrößen zu 1316; Aber ich bekomme Fehler: "PES packet size mismatch" regelmäßig und Ausgabe von video ist schrecklich.

InformationsquelleAutor pAkY88 | 2012-05-23

Schreibe einen Kommentar