Comment envoyer MPEGTS flux UDP

Je suis l'élaboration d'une vidéo en temps réel-système de streaming qui est composé essentiellement par un serveur et plusieurs clients.

Pour l'instant, nous allons ignorer la façon dont les paquets sont transmis entre le serveur et les clients, concentrons-nous seulement sur comment le serveur peut envoyer un MPEGTS diffuser sur les paquets UDP.

Le flux de données est codé dans MPEGTS format.

Ce que je suis en train de faire est de la lecture de certains paquets (la principale question est "combien?") et les encapsulant dans des paquets UDP. La destination (un client) lit ces paquets UDP et puis les transmet à VLC, qui est capable de jouer MPEGTS flux réseau par la lecture des paquets UDP.

Si j'envoie la vidéo uniquement les paquets, tout fonctionne bien, au lieu de cela, si j'essaie de les encapsuler dans le même paquet UDP, tant certains paquets vidéo et quelques paquets audio, VLC n'est pas capable de décoder et lire le contenu.
J'ai lu quelque part que chaque paquet UDP doit contenir 7 TS les paquets, mais malheureusement, même si je respecte cette règle, VLC ne pas décoder le flux de données correctement.

Voici un exemple de code de mon programme: http://pastebin.com/evMi6FkY

Comment dois-je encapsuler MPEGTS paquets dans des paquets UDP?

Merci!

Notez que vlc a un bug où souvent il ne jouera pas un flux udp si il n'y a pas de @ dans l'url, même si l'url n'a pas de nom d'utilisateur/mot de passe. Cela dit, que pas plus de 8 188 octets ts les paquets de tenir dans un paquet udp, vous ne pouvez pas inclure plus. (moins n'est pas un problème). Et un paquet udp doit commencer avec le début de la ts paquet, c'est à dire le premier octet doit être 0x47. Utiliser wireshark pour vérifier les données.
Avez-vous résolu votre problème? J'ai fait une vidéo en streaming avec dvblast, envoyer des paquets UDP, et les recevoir avec ffmpeg. Même définir des tailles de paquets UDP à 1316; Mais j'obtiens l'erreur: "PES taille de paquet" incompatibilité régulièrement et de sortie vidéo est terrible.

OriginalL'auteur pAkY88 | 2012-05-23