Comment fragment H264 Paquets RTP compatible avec RFC3984
J'ai le FFMPEG streaming de référence de la vidéo h264, ce qui je dois l'encapsuler dans RTP et de l'envoyer à SIP téléphones pour leur décodage. Je suis à l'aide de Linphone avec le h264 plugin pour Windows et Mirial pour le décodage des progrès. Cependant, j'ai parfois l'énorme taille de l'image (3 ko ~ 9 ko) de l'FFMPEG, qui, évidemment, ne rentre pas dans la MTU.
Si j'envoie ces images "comme" de confiance et de IP fragmentation, certains téléphones sont capables de jouer assez bien, mais d'autres s'étouffer et ne peut pas décoder le flux de données. Je pense que c'est parce que le stream n'est pas conforme à la RFC 3984 qui spécifie que les paquets qui ne rentrent pas dans le MTU être séparé en différentes NALUs et marque la fin d'un bloc avec la Marque caractéristique de la RTP.
Comment puis-je savoir où je peut "couper" le I ou P? J'ai remarqué que la fragmentation h264 paquets (sans la Marque de l'étiquette) se terminent parfois dans 0xF8, mais ne pouvait pas tout à fait obtenir un modèle et dans la RFC 3984 qui explique comment envoyer ces paquets sur RTP ne précise pas comment le faire.
Mise à JOUR: Est-ce que quelqu'un sait comment raconter l'X264 bibliothèque comment générer NALUs d'une Taille Max? de cette façon, je devrais être capable d'éviter ce problème. Merci à tous
OriginalL'auteur Pierluigi Cifani | 2011-04-01
Vous devez vous connecter pour publier un commentaire.
Comme un auteur à la RFC 3984bis (RFC 6184), il décrit en détail exactement comment convertir H. 264 Nales dans la RFC 3984 paquets. Il y a 3 modes de fonctionnement: 0 (NAL), 1 (permet de fragmenter et la combinaison de ces Lignes), et 2 (permet de fragment, de combiner et de interleave la transmission afin de modifier la façon dont un rafale aura une incidence sur un ruisseau, entre autres choses). Voir SDP packetization-mode. Seul le mode 0 est nécessaire.
Mode 0 (NAL) vous oblige utiliser UDP fragmentation (déconseillé) ou de dire le codeur ne pas générer de Nale de plus de MTU-X. Vous devrait être en mesure de dire à l'encodeur.
Mode 1 permet de fragment. Voir la RFC pour la façon dont vous configurez un FU-UN paquet. La fragmentation de l'info est sur le front. Vous pouvez également utiliser STAPs à l'agrégation de petites Nales comme SPS et PPS les paquets envoyés avant Idr (normalement). Chaque paquet nécessite normale RTP-têtes avec des numéros de séquence incrémenté (mais la même heure).
Marque sur le dernier paquet RTP d'un cadre (pas d'un fragment ou NALE) est prévu, mais vous ne devriez pas compter sur elle.
Pouvez-vous expliquer pourquoi UDP fragmentation est mauvais ? Comme je le comprends, UDP fragmentation (ou mieux, la fragmentation IP) devrait conduire à moins de trafic réseau, puisque vous n'avez pas à coder un RTP (UDP) en-tête de chaque paquet (si vous avez gain de 12 à 20 octets par paquet).
Il y a beaucoup de verbiage sur ce... Certains routeurs ne prennent pas en charge la fragmentation. Divers OS et d'autres intermédiaire de boîtes de besoin pour réassembler les paquets fragmentés, et tous ont des limites sur la remonté de la taille généralement bien en dessous du max UDP taille de 65535 octets (souvent autour de 4K). Il n'y a pas de norme taille max. la fragmentation vous laisse plus vulnérables à la perte de paquets (si les données sont inutilisables dans des paquets simples qui peuvent aide pas beaucoup). Peut-être cela devrait être revisité, mais l'absence d'un utile de taille standard est un gros problème.
OriginalL'auteur jesup
En x264, je crois que l'int i_slice_max_size dans x264_param_t peut être utilisé pour contrôler la taille. Jetez un oeil dans x264.h je ne me souviens plus où j'ai lu cela, mais le post a déclaré ce membre de structure peut être utilisée pour le contrôle de la NALE de la taille, mais je n'ai pas essayé moi-même.
int i_slice_max_size; /* taille Max par tranche en octets; inclut l'estimation NALE de frais généraux. */
EDIT: j'ai trouvé la source
http://mailman.videolan.org/pipermail/x264-devel/2011-February/008263.html
OriginalL'auteur ianhobo