Wie empfange ich RTP-Pakete, die von RTP-URL in iOS-Gerät streamen? (z. B. rtp: //@225.0.0.0)

8

Ich versuche, RTP-Pakete (die ein Audio streamen) von der RTP-URL z. rtp: //@225.0.0.0 Nach so viel Nachforschungen habe ich die URL in meinem Gerät gestreamt und mit Ссылка abgespielt. Dies spielt nur die gestreamten Daten, hat aber keine Funktion zum Speichern der Daten.

Aus Forschung und anderen Quellen finde ich viel Inhalt und einfache Informationen, die hilfreich sein sollten, um das Paket über RTP zu streamen und es in iOS-Gerät zu speichern.

Ich habe es mit folgendem Link versucht.

  1. Ссылка

  2. Ссылка

Diese beiden kompilieren nicht einmal aufgrund von POD. Andere Projekte oder Anleitungen geben mir lediglich einen Verweis auf RTSP Stream anstelle von RTP Stream.

Wenn uns jemand eine Anleitung oder eine Idee geben kann, wie wir solche Dinge umsetzen können, dann wird es geschätzt.

    
Bhavik Kama 19.01.2017, 09:52
quelle

1 Antwort

6

Zuerst müssen Sie verstehen, wie das funktioniert.

Der Sender, d. h. der Ersteller des RTP-Streams, macht wahrscheinlich folgendes:

  1. Verwendet eine Quelle für die Daten: Im Falle von Audio könnte dies das Mikrofon oder Audio-Samples oder eine Datei
  2. sein
  3. Kodiert das Audio mit einem Audio-Codec wie AAC oder Opus.
  4. Verwendet den RTP-Paketierer zum Erstellen von RTP-Paketen aus codierten Audiorahmen
  5. Verwendet eine Transportschicht wie UDP, um diese Pakete zu senden

Protokolle wie RTSP stellen die notwendige Signalisierungsinformation bereit, um bessere Strominformationen bereitzustellen. Normalerweise ist RTP selbst nicht genug, da Dinge wie Staukontrolle, Feedback, dynamische Bitrate mit Hilfe von RTCP gehandhabt werden.

Um den eingehenden Stream zu speichern, müssen Sie Folgendes tun:

  1. Verwenden Sie einen RTP-Entpacker, um die codierten Audio-Frames daraus zu entfernen. Sie können Ihre eigenen schreiben oder eine Implementierung eines Drittanbieters verwenden. In der Tat ist ffmpeg ein großes Framework, das den gesamten Code für die meisten Codecs und Protokolle enthält. Finden Sie jedoch für Ihren Fall einen einfachen RTP-Entpaketierer. Es könnte Header geben, die einem bestimmten Codec entsprechen, um sicherzustellen, dass Sie auf einen korrekten RFC verweisen.

  2. Sobald Sie Zugriff auf codierte Frames haben, können Sie dieselben in einen Mediencontainer wie m4a oder ogg schreiben, abhängig vom Audio-Codec, der im Stream verwendet wird.

Um den Stream abzuspielen, müssen Sie Folgendes tun:

  1. Verwenden Sie einen RTP-Entpacker, um die codierten Audio-Frames daraus zu entfernen. Sie können Ihre eigenen schreiben oder eine Implementierung eines Drittanbieters verwenden. In der Tat ist ffmpeg ein großes Framework, das den gesamten Code für die meisten Codecs und Protokolle enthält. Finden Sie jedoch für Ihren Fall einen einfachen RTP-Entpaketierer.

  2. Sobald Sie auf codierte Frames zugreifen können, verwenden Sie einen Audio-Decoder (als Bibliothek verfügbar), um die Frames zu decodieren oder zu überprüfen, ob Ihre Plattform diesen Codec direkt für die Wiedergabe unterstützt

  3. Sobald Sie Zugriff auf entschlüsselte Bilder haben, können Sie in iOS AVFoundation verwenden, um dasselbe zu spielen.

Wenn Sie nach einer einfachen Methode suchen, verwenden Sie möglicherweise eine Implementierung von Drittanbietern wie Ссылка

    
manishg 30.01.2017 01:57
quelle