H.264 sur RTP - Identifier les trames SPS et PPS

J'ai cru H. 264 Flux à partir d'une Caméra IP emballés dans des RTP images. Je veux obtenir raw H. 264 de données dans un fichier afin que je puisse le convertir avec ffmpeg.

Donc quand je veux écrire les données dans mes brutes H. 264 fichier que j'ai découvert il doit ressembler à ceci:

00 00 01 [SPS] 
00 00 01 [PPS]
00 00 01 [NALByte]
[PAYLOAD RTP Frame 1]     //Payload always without the first 2 Bytes -> NAL
[PAYLOAD RTP Frame 2]
[... until PAYLOAD Frame with Mark Bit received]  //From here its a new Video Frame
00 00 01 [NAL BYTE]
[PAYLOAD RTP Frame 1]
....

Donc, je reçois le SPS et la PPS de la Session Description Protocol de mon précédent RTSP de la communication. En outre, l'appareil envoie le SPS et la PPSdans deux messages avant de commencer avec le flux vidéo elle-même.

Donc je capture les messages dans l'ordre:

1. Preceding RTSP Communication here ( including SDP with SPS and PPS )
2. RTP Frame with Payload: 67 42 80 28 DA 01 40 16 C4    //This is the SPS 
3. RTP Frame with Payload: 68 CE 3C 80                   //This is the PPS
4. RTP Frame with Payload: ...  //Video Data

Puis il y a des Images avec une Charge utile et à un certain moment, RTP Cadre avec la Marker Bit = 1. Cela signifie, si j'ai bien compris) que j'ai une vision complète de l'image vidéo. D'après ce que j'écris le Préfixe de la Séquence ( 00 00 01 ) et le NALà partir de la charge utile et aller à nouveau sur la même procédure.

Maintenant, mon appareil photo m'envoie après chaque 8 des Images Vidéo à la SPS et la PPS de nouveau. ( Encore une fois en deux RTP Images, comme on le voit dans l'exemple ci-dessus ). Je sais que, en particulier le PPS pouvez modifier le streaming mais ce n'est pas le problème.

Mes questions maintenant:

1. Dois-je écrire le SPS/PPS tous les 8 Image de la Vidéo?

Si mon SPS et mon PPS ne pas changer, il suffit de les avoir écrit au tout début de mon fichier et rien de plus?

2. Comment distinguer entre SPS/PPS et normal RTP Cadres?

Dans mon Code C++ qui analyse les données transmises j'ai besoin de faire une différence entre les RTP Images avec la normale de la Charge utile d'un de ceux portant la SPS/PPS. Comment les distinguer? Bon, SPS/PPS cadres sont généralement plus petites, mais ce n'est pas un enregistrement d'appel à compter. Parce que si je les ignore j'ai besoin de savoir quelles données je peux jeter, ou si j'ai besoin de l'écrire j'ai besoin de mettre la 00 00 01 Préfixe devant eux. ? Ou est-ce une règle fixe qui ils se produisent tous les 8 Image de la Vidéo?

source d'informationauteur Toby