Frage

Ich habe versucht, etwas zu erstellen CMVideoFormatDescriptionRef mit CMVideoFormatDescriptionCreateFromH264ParameterSets aber es schlägt mit dem Fehler -12712 fehl (der in keinem Header definiert zu sein scheint)

Ich habe meine SPS und PPS von einem genommen avcC Atom einer MOV-Datei (erstellt von einer iPhone-Kamera-App):

61 76 63 43 01 64 00 29 FF E1 00 10 67 64 00 29 AC 56 80 78 02 27 E5 9A 80
80 80 81 01 00 05 28 EE 04 F2 C0

SPS scheint zu sein: 67 64 00 29 AC 56 80 78 02 27 E5 9A 80 80 80 81

...und das PPS: 28 EE 04 F2 C0

Ich habe SPS und PPS mit ihren 4-Byte-Längen vorangestellt (habe auch 1-Byte- und 2-Byte-Längen mit den gleichen Ergebnissen ausprobiert) und den Aufruf folgendermaßen ausgegeben:

uint8_t sps[] = {0x00, 0x00, 0x00, 0x10, 0x67, 0x64, 0x00, 0x29, 0xAC, 0x56, 0x80, 0x78, 0x02, 0x27, 0xE5, 0x9A, 0x80, 0x80, 0x80, 0x81};

uint8_t pps[] = {0x00, 0x00, 0x00, 0x05, 0x28, 0xEE, 0x04, 0xF2, 0xC0};

uint8_t* props[] = {sps, pps};

size_t sizes[] = {0x14, 0x09}; // sizes include the 4-byte length

CMVideoFormatDescriptionRef formatDesc;

OSStatus formatCreateResult = CMVideoFormatDescriptionCreateFromH264ParameterSets(NULL, 2, props, sizes, 4, &formatDesc);

Ich erhalte jedes Mal -12712 als Ergebnis (habe es mit SPS/PPS aus mehreren Dateien und Streams versucht).

Habt ihr eine Idee, was ich falsch mache?(Der Code wurde auf Xcode6-Beta4 im Simulator überprüft).Ich würde es lieber vermeiden, SPS und PPS selbst zu analysieren und einfaches CMVideoFormatDescriptionCreate zu verwenden :-)

War es hilfreich?

Lösung

Berücksichtigen Sie nicht die Größe von 4 Byte.Weder in den SPS/PPS-Nutzlasten noch in den Größenwerten.

Andere Tipps

Ich habe für dich gegoogelt ;-)

Überprüfen Sie diesen Chromium-Code

https://src.chromium.org/svn/trunk/src/content/common/gpu/media/vt_video_decode_accelerator.cc

Und diese Antwort zu H.264 SPS/PPS NALU

Mögliche Speicherorte für Sequenz-/Bildparametersätze für H.264-Stream

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top