Android - Speichere einen rtsp (h264) -Stream in die mp4-Datei

9

Ich arbeite an einem Projekt, wo ich

brauche
  1. Lese den Eingang H.264-kodierten Stream von einer IP-Kamera - Ich kann dies durch eine rtsp URL wie rtsp: //192.168.1.83: 8001 /

  2. holen
  3. Zeigt den IPCamera-Stream an - dies kann ich mit dem

  4. tun
%Vor%
  1. Jetzt möchte ich diesen Stream in eine MP4-Datei aufnehmen. Hier stecke ich fest und ich überlege mir die folgenden Optionen

a) MediaRecorder - Basierend auf meinen Google-Suchen glaube ich für diese Klasse die Eingabe nur von einer Gerätekamera. Gibt es eine Möglichkeit, dies zu optimieren, wo ich eine Eingabe von Rtsp Stream bereitstellen kann?

b) MediaCodec API - 4.1 ab Android hat diese Low-Level-API mit und MediaExtractor und MediaCodec veröffentlicht. Für diese Option denke ich, dass ein rtsp Stream im folgenden Ausschnitt nicht verwendet werden kann

%Vor%

c) Kann ich von der URL lesen und sie wie eine Datei speichern? Wie konvertiere ich diesen Stream in eine MP4-Datei? Jedes Code-Snippet wird sehr hilfreich sein.

Ich hatte auch versucht, FFMPEG zu verwenden, aber die Leistung war so schlecht, dass ich diese Option fallen gelassen habe.

Alle Eingaben zu den obigen drei Optionen oder jede andere zusätzliche Option, die ich in Betracht ziehen kann, werden sehr geschätzt.

Danke !!

    
maxkart 28.04.2013, 18:15
quelle

2 Antworten

1

Es stimmt, dass MediaRecorder keine Unterstützung für die Verarbeitung von Direct-Streaming-Inhalten bietet. Aus einer Frameworks-Perspektive gibt es Parser-Objekte wie in MediaExtractor und Codec-Objekte wie MediaCodec , aber nicht (noch) Autoren-Abstraktionen.

In AOSP , recordVideo ist ein Befehlszeilendienstprogramm für eine einfache dateibasierte Aufzeichnung. Als Teil der Implementierung wird ein Encoder erstellt und an die MPEG4Writer übergeben, wie beobachtet. hier . Sie könnten diesen Code möglicherweise wiederverwenden und versuchen, den eingehenden Stream direkt in die Datei zu schreiben.

Dafür können Sie Ihre Streaming-Eingabe als MediaSource modellieren und direkt an den Writer übergeben. Sie müssten einige grundlegende metaData aus der Streaming-Quelle einrichten und an den nachgeschalteten Writer übergeben. Sie müssen möglicherweise kein neues MediaRecorder erstellen, wenn Sie die Eingabequelle direkt modellieren könnten.

    
Ganesh 30.04.2013 00:39
quelle
0

Habe genau das gleiche Problem hier. FFmpeg löst das Problem und scheint sehr effizient zu sein, aber es ist Hardware abhängig, es muss für die spezifische Armversion der CPU jedes Gerätes kompiliert werden.

Ein anderer Ansatz jcodec ( Ссылка ), aber noch nicht herausgefunden, wie man einen rtsp-Stream damit speichern kann. Es ist eine reine Java-Bibliothek, aber es gibt nicht viel Dokumentation zur Verfügung.

Bitte sagen Sie mir, wenn Sie einen Weg finden, es zu tun.

    
Stefan Alexandru 14.06.2013 15:34
quelle