2013-08-01 3 views
5

Ich versuchte setDataSource() in MediaExtractor Klasse, aber es funktioniert nicht mit RTSP-Pfad. Ich kann den gleichen Pfad mit MediaPlayer Klasse verwenden und es funktioniert, aber es ist sehr wichtig für mich, stattdessen MediaCodec Klasse zu verwenden. Ich denke Android hat keine RTSP API, die ich verwenden könnte, noch kann ich irgendwelche RTSP Bibliotheken für Android finden.Wie MediaCodec verwendet wird, um Daten vom RTSP-Server zu dekodieren?

Gibt es eine relativ einfache Möglichkeit, Videostreams vom RTSP-Server in die MediaCodec-Klasse einzuspeisen?

Antwort

4

Kein einfacher Weg. Ich beendete das Projekt auf mit:

https://code.google.com/p/android-rtsp-client/

für RTSP-Protokoll (arbeitete nach einigen Korrekturen und Änderungen).

Ich musste RTP und RTCP Protokolle selbst implementieren (einige vereinfachte Versionen waren in meinem Fall genug).

Ich musste auch einen Code zum Extrahieren von NAL-Einheiten aus RTP-Paketen erstellen. Ich hatte diese zuerst zu lesen:

http://www.ietf.org/rfc/rfc3984.txt

um herauszufinden, wie das zu tun.

+0

Können Sie einen Einblick geben, wie genau Sie den RTSP-Stream aus dem obigen Android-Projekt genommen und in einen 'MediaCodec'-Decoder eingespeist haben? Ich bin hier ein bisschen außerhalb meines Elements, und das ist Teil der Anwendung, die ich für meinen Arbeitgeber entwickeln muss. Jede Hilfe wäre großartig! – rayryeng

+0

Fwiw, RFC 3984 wurde durch RFC 6184 ersetzt - http://tools.ietf.org/html/rfc6184. –