2010-04-28 22 views
2

J'essayais d'en apprendre un peu plus sur h264 en regardant le flux binaire d'un fichier vidéo avec un éditeur hexadécimal. J'ai trouvé here les codes de départ pour un plan d'objet vidéo (0x000001b6) et pour les images i (0x000001b600).Comment s'organise un IdOstream h264?/header start codes

Mais je ne trouve pas beaucoup de ces octets dans les fichiers vidéo. La plupart du temps, ces codes de démarrage apparaissent au début d'un fichier avec seulement quelques piqûres entre les deux. Je m'attendais à ce qu'ils se présentent très régulièrement, à égale distance partout dans le fichier !?

Est-ce qu'il est même correct de regarder un fichier avec un éditeur hexadécimal de cette façon? Quels autres codes de démarrage existent et comment un fichier h264 est-il organisé?

Répondre

3

Le code de démarrage 0x000001b6 s'applique à la vidéo MPEG-4 partie 2 qui est le profil simple. Cela correspond à des codecs tels que XVID et DIVX. H.264 est mpeg-4 partie 10 qui est le profil de codage vidéo avancé. H.264 utilise différents codes de démarrage. Je ne suis pas aussi familier avec la partie 10 que je suis avec la partie 2, mais un bref coup d'œil à travers la norme (ISO 14496-10) montre que le flux de bits est divisé en sections appelées unités NAL. Ces unités ont le code 24 bits 0x000001 qui les précède pour la synchronisation conformément à la section B.1.1. L'octet suivant est constitué des champs forbidden_zero_bit, nal_ref_idc et nal_unit_type conformément à la section 7.3.1.

Je ne suis pas sûr que ces unités NAL sont séparées sur les limites de trame ou non. Il se peut que vous deviez vous contenter de la norme qui définit toute la syntaxe bitstream.

+0

Merci beaucoup! J'ai commencé à chercher plutôt dans mpeg4 part2 car je voulais juste avoir un bref aperçu de la façon dont fonctionne mpeg4 bitstream sage! Merci encore! – Matt