Besoin de convertir h264 flux à partir de l'annexe b format de AVCC format
J'ai besoin de convertir h264 flux à partir de l'annexe b format de AVCC format.
J'ai essayé de convertir h264 annexe-b AVCC:
J'ai extrait le SPS et le SPA de l'annexe des flux et des créé le de données Supplémentaires.
J'ai alors regardé le stream pour 0x00 0x00 0x00 0x01 (ce qui devrait être le début de chaque Nal) et de continuer à chercher un autre 0x00 0x00 0x00 0x01 (qui sera la fin de la Nale), alors a moins d'obtenir la Nale de la longueur, puis remplacer la première 0x00 0x00 0x00 0x01 à 0x00 0x00 0x00 [NulSize], mais il semble que cela ne produit pas valide flux.
J'ai alors découvert que NUL peut commence ou se termine avec 0x00 0x00 0x01 donc je suis un peu confus.
de toute façon, j'espère que quelqu'un pourra m'écrire fonction de convertir de l'annexe b à AVCC.
Grâce.
OriginalL'auteur user3592107 | 2014-05-01
Vous devez vous connecter pour publier un commentaire.
NALU
est l'unité de base.Puis,
annexb format:
([start code] NALU) | ( [start code] NALU) |
avcc format:
([extradata]) | ([length] NALU) | ([length] NALU) |
Dans annexb,
[start code]
peut être0x000001
ou0x00000001
.Dans avcc, les octets de
[length]
dépendNALULengthSizeMinusOne
dansavcc extradata
, la valeur de[length]
dépend de la taille de la suiteNALU
et dans les deuxannexb and avcc
format, leNALUs
ne sont pas différents.OriginalL'auteur waveacme
Commencer les codes ne sont pas d'une taille fixe et peut être 3 ou 4 octets. Lire la suite ici: https://stackoverflow.com/a/24890903/660982
Avez-vous lu le lien? vous avez besoin d'écrire NALULengthSizeMinusOne+1 octets avant chaque NALU. Donc, oui. Vous devrez peut-être insérer ou de supprimer des octets en fonction de ce que vous définissez dans NALULengthSizeMinusOne.
Ce n'est pas ce que je veux dire. La longueur je vais écrire 4 octets pour moi toujours. maintenant, si je vois 0x00 0x00 0x00 0x01 ... 4 octets ... 0x00 0x00 0x00 0x01 Puis-je convertir 0x00 0x00 0x00 0x04 ... 4 octets ....0x00 0x00 0x00 0x01 droit? I. E est-ce alors la seule chose que je dois faire?
Oui, la seule chose que vous devez faire est de commencer à remplacer les codes (pas de mater ce que la longueur du code de départ) avec un 32 bits big endian entier représentant la longueur de la prochaine NALU.
Le blog n'est plus disponible, mais vous pouvez y accéder avec la waybackmachine ici: web.archive.org/web/20141002182039/http://www.szatmary.org:80/... Aussi, il semble que le contenu est plus ou moins la même chose que ce stackoverflow réponse: stackoverflow.com/a/24890903/660982
OriginalL'auteur szatmary