Wyślij przechwytywanie Android h264 nad strumieniem rtp
Piszę streamer wideo rtp dla Androida, który odczytuje dane zakodowane w h264 z lokalnego gniazda Android i pakuje je. Chodzi o to, że to zrobiłem, ale wciąż otrzymuję czarne ramki po stronie klienta (Voip).
Komunikacja wygląda następująco: Android -> Gwiazdka -> Jitsi (Osx) (i rewers)
Jest jeszcze kilka rzeczy, których jeszcze nie zrozumiałem:
1) Nagrywarka multimedialna Androida daje mi surowy strumień h264. Skąd mogę wiedzieć, kiedy NAL zaczyna się / kończy na podstawie tego strumienia? Nie ma żadnego wzoru 0x000001, ale ma 0x0000 (który zakładam, że jest separatorem)
EDYTOWAĆ:
Dodawanie dodatkowych informacji. Są to 2 (pierwszy, druga) różne odczyty bufora wejściowego (w kolejności). Jeśli dobrze to zrozumiałem, pierwsze 4 bajty powinny zostać użyte do uzyskania długości NALU, a 5-ty (indeks 4) to nagłówek NALU.
Skopiuję tutaj wartości bajtu do przyszłego wykorzystania:
<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>
czy to jest poprawne?
2) Jak mogę uzyskać znacznik czasu NALu i jego długość z tego strumienia?
3) Z jakiegoś powodu pakiety są oznaczane (nawet gdy rozbieram znacznik). (W przypadku sprawdzenia pliku pcap) [NAPRAWIONY: Nie korzystałem z tego samego SSCR dla każdego pakietu]
Tutaj jestpcap przechwytywanie strumienia pochodzącego z gwiazdki (która pochodzi z Androida). Urządzenie z Androidem to Asus Transform Prime z Androidem ICS.
Wysyłam tryb pakietowania (1
) i profil-id (42801e
) w sdp próbowałem również wysłać sprops (sps:Z0KAHpWgUHxA
, PSP:aM48gA==
) parametr, ale nic się nie zmieniło.
Twoje zdrowie.