Senden Sie Android h264-Captures über einen RTP-Stream

Ich schreibe einen RTP-Video-Streamer für Android, der h264-codierte Daten von einem lokalen Android-Socket liest und paketiert. Die Sache ist, dass ich es getan habe, aber ich bekomme weiterhin schwarze Rahmen auf der Clientseite (Voip).

Die Kommunikation geht so: Android -> Asterisk -> Jitsi (Osx) (und umgekehrt)

Es gibt ein paar Dinge, die ich noch nicht verstanden habe:

1) Der Mediarecorder von Android gibt mir einen rohen h264-Stream. Woher weiß ich, wann eine NAL basierend auf diesem Stream startet / endet? Es hat kein 0x000001-Muster, aber es hat ein 0x0000 (von dem ich annehme, dass es ein Trennzeichen ist)

BEARBEITEN:

Weitere Informationen hinzufügen. Dies sind 2 (zuerst, zweite) verschiedene Lesevorgänge des Eingangspuffers (in der Reihenfolge). Wenn ich es richtig gemacht habe, sollten die ersten 4 Bytes verwendet werden, um die NALU-Länge zu erhalten, und die fünfte (Index 4) ist der NALU-Header.

Ich kopiere hier die Werte des Bytes für die zukünftige Verwendung:

<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>

ist das richtig?

2) Wie kann ich den NALu-Zeitstempel und seine Länge aus diesem Stream abrufen?

3) Aus irgendeinem Grund werden die Pakete markiert (auch wenn ich die Markierung aufgehoben habe). (Falls Sie die pcap-Datei überprüfen) [FEST: Ich habe nicht für jedes Paket den gleichen SSCR verwendet.]

Hier ist einpcap Erfassung des von Asterisk kommenden Streams (welcher von Android kommt). Das Android-Gerät ist ein Asus Transform Prime mit Android ICS.

Ich sende den Paketierungsmodus (1) und Profile-Level-ID (42801e) im sdp habe ich auch versucht die sprops zu versenden (sps:Z0KAHpWgUHxA, psp:aM48gA==) Parameter aber nichts geändert.

Prost.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage