Найти SPS и PPS из приватных данных

У меня есть веб-сервис, который предоставляет мне пользовательский формат контейнера, который содержит блоки H.264 NAL. Я хочу воспроизвести их через MediaElement в silverlight, используя собственный MediaStreamSource.

Согласно этой статье Мне нужно установить частные данные кодека. Веб-сервис предоставляет мне configCodec, но в формате base64 (выглядит как «AUIAHv/hABhnQsAe2gMg7+IhAAADAAEAAAMAMo8WLqABAARozgvI»)

Итак, на других платформах (iOS, Android) все, что мне нужно, это установить свойство дополнительных данных кодека.

codec->extra-data = info;

Но в Windows Phone я должен указать эту информацию, например, 00000001 [SPS] 00000001 [PPS]. Итак, может ли кто-нибудь сказать мне, как я могу анализировать предоставленные личные данные из веб-службы, чтобы получить из них значения SPS и PPS?


person Roman Golenok    schedule 22.08.2012    source источник


Ответы (1)


Ваши данные, декодированные в шестнадцатеричный код:

0x01 0x42 0x00 0x1E 0xFF 
0xE1 
0x00 0x18 (SPS length in bytes)
0x67 0x42 0xC0 0x1E 0xDA 0x03 0x20 0xEF (SPS...)
0xE2 0x21 0x00 0x00 0x03 0x00 0x01 0x00 
0x00 0x03 0x00 0x32 0x8F 0x16 0x2E 0xA0 (...SPS)
0x01 
0x00 0x04 (PPS length in bytes)
0x68 0xCE 0x0B 0xC8 (PPS)

Я не знаю, что это за структура и где она находится, но СПС и ППС на ней точно есть.

person Roman R.    schedule 22.08.2012
comment
Могли бы объяснить? Или, может быть, дать мне ссылку для информации об этом разборе? - person Roman Golenok; 22.08.2012
comment
SPS и PPS описаны в спецификации MPEG-4 Part 10. 0x67 представляет собой блок NAL типа 7 (SPS). Тип 8 — ППС. Байты длины разумно совпадают. Что-нибудь еще? Точная структура данных зависит от того, откуда вы ее взяли, вы говорите, что веб-сервис предоставляет мне... - person Roman R.; 22.08.2012