2010-09-29 6 views
8

Je ne sais pas trop sur h.264, mais le fait est que j'ai cette vidéo en h.264 dans un conteneur mp4 que je voudrais diffuser sur UDP.Diffusion d'une vidéo codée en h.264 sur UDP

Ma question est simple, y a-t-il des ajustements que je peux peut-être faire pendant le codage de la vidéo pour qu'elle soit assez tolérante à une perte de paquets "légère"?

Je sais que la vidéo compressée a généralement une image-clé toutes les N trames et qu'entre celles-ci, elle n'envoie que les deltas. Je peux imaginer h.264 devrait est beaucoup plus complexe que cela, et donc le peut-être pas si simple. Pour être plus précis, j'ai fait quelques expériences et réalisé que juste en supprimant 1024 octets dans un flux de vidéo, je le rends complètement "injouable" du point de la perte et de la suite.

Ce que je voudrais, c'est tolérer des pertes de lumière comme ça, est-ce possible?

Merci

Nelson

Répondre

10

Cela dépend de ce que les données que vous perdez. Certaines données du flux H264 ne sont pas des données qui peuvent être perdues. Par exemple, si votre test dans lequel vous avez perdu 1024 octets est le premier 1024 octets que vous avez envoyé, vous avez probablement supprimé votre ensemble de paramètres de séquence et d'image (SPS/PPS), qui indique au décodeur comment interpréter les informations entrantes. Vous ne pouvez probablement pas simplement laisser tomber un nombre aléatoire de 1024 octets hors du flux; typiquement H264 est mis en paquets donc ce genre de chose ne se produirait pas de toute façon. Donc, H264 contient quelques petites données qui ne sont pas vraiment «jetables»; Beaucoup de protocoles de streaming tels que RTSP expliquent clairement que vous NE DEVRIEZ PAS envoyer ce type d'informations via le canal de transport avec perte, mais plutôt pendant l'échange SDP (qui se produit sur TCP). En ce qui concerne la tolérance aux pertes, le H264 possède des caractéristiques censées faciliter la tolérance aux pertes (ASO, FMO, etc.), mais en pratique, la plupart des codeurs ne les prennent pas en charge. Si vous le pouvez, j'utiliserais x264; leur configuration de streaming à faible latence fonctionne bien même avec une perte de paquets atteignant 20% ou plus. Si votre H264 est déjà encodé, il n'y a pas grand chose à faire. Votre vidéo est déjà encodée et vous devrez la diffuser telle quelle.

Questions connexes