web-dev-qa-db-fra.com

erreurs lors du décodage des trames H.264 à l'aide de ffmpeg

J'obtiens les erreurs suivantes lors du décodage des trames H.264 reçues de l'extrémité distante d'un appel vidéo H.264 SIP. Appréciez toute aide pour comprendre ces erreurs.

non-existing PPS 0 referenced
decode_slice_header error
non-existing PPS 0 referenced
decode_slice_header error
no frame!

non-existing PPS 0 referenced
decode_slice_header error
non-existing PPS 0 referenced
decode_slice_header error
no frame!
33
John Qualis

Cela signifie simplement que ffmpeg n'a pas encore vu d'image clé, qui contient des informations SPS et PPS. SPS et PPS sont cruciales pour décoder une image/tranche entrante). Les images clés sont envoyées périodiquement (c'est-à-dire toutes les 5 à 10 secondes ou plus); ainsi, s'il s'avère que vous avez rejoint un flux avant l'arrivée de l'image clé, vous verrez cet avertissement pour chaque image jusqu'à ce qu'une image clé apparaisse.

Dès que l'image clé apparaît du câble, ffmpeg aura suffisamment d'informations pour décoder cette image (et toutes les images suivantes jusqu'à l'image clé suivante), donc ces avertissements disparaîtront.

29
Aki

vous devez ajouter des images sps et pps. ffmpeg a besoin de ces informations pour effectuer le décodage. Vous pouvez trouver ces valeurs dans le fichier SDP.

Dans le fichier SDP, vous devriez regarder les unités NAL, vous pouvez voir quelque chose comme ça z0IAHukCwS1xIADbugAzf5GdyGQl, aM4xUg

ces valeurs basées64 encodées, vous devez les convertir au format hexadécimal. J'utilise WireShark et WireShark convertit lui-même ces valeurs pour vous. Après cela, vous avez des valeurs sps et pps.

Vous devez maintenant ajouter ces informations Nal avant la trame de données.

00 00 00 01 sps 00 00 00 01 pps 00 00 00 01 données

pour h264, ce format que j'ai utilisé pour décoder.

2
Yasin SOYASLAN

Pour décoder un cadre ou une tranche, sliceHeader est décodé, ce qui fait référence à un PPS ou "Picture Parameter Set". Il contient des informations concernant les spécificités du cadre comme la largeur, hauteur etc.

Je suppose que vos données proviennent d'un canal d'entrée en streaming, auquel cas SPS et PPS auraient été envoyés plus tôt dans le flux.

Vous devrez peut-être concaténer la même chose à votre flux.

2
Ganesh