Отправить Android h264 захват через поток rtp
Я пишу видеопоток rtp для Android, который считывает закодированные данные h264 из локального сокета Android и упаковывает их. Дело в том, что я сделал это, но я продолжаю получать черные рамки на стороне клиента (Voip).
Общение происходит так: Android - & gt; Звездочка - & gt; Джитси (Osx) (и наоборот)
Есть несколько вещей, которые я еще не понял:
1) Медиа-рекордер Android дает мне сырой поток h264. Как я могу узнать, когда NAL начинается / заканчивается на основе этого потока? У него нет шаблона 0x000001, но есть 0x0000 (который, я предполагаю, является разделителем).
EDIT:
Добавляем больше информации. Это 2 (первый, второй) различные чтения входного буфера (по порядку). Если я правильно понял, первые 4 байта должны использоваться для получения длины NALU, а 5-й (индекс 4) - заголовок NALU.
Я скопирую здесь значения байтов для будущего использования:
<code>1) 0 0 12 114 101 -72 4 25 -15 -1 -121 -53 ..... length = (114&0xFF) + (12&0xFF)*256 + (0&0xFF) length -> 3186 forbidden = 101 & 0x80 forbidden -> 0 nri = 101 & 0x60 nri -> 96 nal_unit_type = 101 & 0x1F nal_unit_type -> 5 2) 0 0 1 -93 97 -32 32 103 -14 93 -1 .... length = (-93&0xFF) + (1&0xFF)*256 + (0&0xFF) length -> 419 forbidden = 97 & 0x80 forbidden -> 0 nri = 97 & 0x60 nri -> 96 nal_unit_type = 97 & 0x1F nal_unit_type -> 1 </code>
это правильно?
2) Как я могу получить метку времени NALu и ее длину из этого потока?
3) По какой-то причине пакеты помечаются (даже когда я сбрасываю маркер). (Если вы проверите файл pcap) [FIXED: Я не использовал один и тот же SSCR для каждого пакета]
Вот этоPCAP захват потока, поступающего со звездочки (которая идет с Android). Android-устройство представляет собой Asus Transform Prime с Android ICS.
Я отправляю режим пакетирования (1
) и идентификатор уровня профиля (42801e
) в sdp я также пытался отправить sprops (sps:Z0KAHpWgUHxA
psp:aM48gA==
), но ничего не изменилось.
Приветствия.