2017-01-19 9 views
8

Próbuję przesyłać pakiety RTP (które przesyłają strumień audio) z adresu URL RTP, np. rtp: //@225.0.0.0 po tak wielu badaniach na tym samym komputerze nieco przeskanowałem URL w moim urządzeniu i odtwarzam go pod numerem https://github.com/maknapp/vlckitSwiftSample. Odtwarza tylko dane strumieniowe, ale nie ma żadnej funkcji do przechowywania danych.Jak odbierać pakiety RTP przesyłane strumieniowo z adresu URL RTP na urządzeniu z systemem iOS? (np. rtp: //@225.0.0.0)

Z badań i innych źródeł nie znalazłem wiele treści i prostych informacji, które powinny być pomocne przy przesyłaniu pakietów przez RTP i przechowywaniu ich w urządzeniu iOS.

Próbowałem z następującym linkiem.

  1. https://github.com/kewlbear/FFmpeg-iOS-build-script

  2. https://github.com/chrisballinger/FFmpeg-iOS

tych dwóch nie są nawet kompilacji powodu POD kwestii innych projektów lub kierować właśnie daje mi odniesienie na RTSP Stream zamiast RTP Stream.

Jeśli ktoś może udzielić nam wskazówek lub pomysłu, w jaki sposób możemy wdrożyć takie rzeczy, to będzie to docenione.

Odpowiedz

6

Po pierwsze, musisz zrozumieć, jak to działa.

Nadawca czyli twórcy strumienia RTP jest prawdopodobnie następujący sposób:

  1. Wykorzystuje źródło danych: W przypadku dźwięku, może to być mikrofon lub odtwarzacz próbek lub plik
  2. Koduje dźwięk za pomocą kodeku audio, takiego jak AAC lub Opus.
  3. Używa RTP pakietyzator do tworzenia pakietów RTP z zakodowanych ramek akustycznych
  4. wykorzystuje warstwę transportową, takich jak UDP wysłać te pakiety

protokoły takie jak RTSP dostarcza niezbędnych informacji w stanie zapewnić lepszą informację strumienia. Zwykle samo RTP nie jest wystarczające, ponieważ takie rzeczy jak kontrola przeciążenia, sprzężenie zwrotne, dynamiczna przepływność są obsługiwane za pomocą RTCP.

W każdym razie, w celu zapisania strumienia przychodzącego, należy wykonać następujące czynności:

  1. Użyj depacketizer RTP do uzyskania zakodowanych ramek audio z niego. Możesz napisać własną lub skorzystać z implementacji strony trzeciej. W rzeczywistości ffmpeg jest dużą strukturą, która zawiera wszystkie niezbędne kody dla większości kodeków i protokołów. Jednak w twoim przypadku znajdź prosty depekser RTP. Mogą istnieć nagłówki odpowiadające konkretnemu kodekowi, aby upewnić się, że odwołujesz się do poprawnego dokumentu RFC.

  2. Po uzyskaniu dostępu do zakodowanych ramek, można zapisać to samo w pojemniku mediów, takim jak m4a lub ogg w zależności od kodeku audio używanego w strumieniu.

Aby odtworzyć strumień, należy wykonać następujące czynności:

  1. Użyj depacketizer RTP do uzyskania zakodowanych ramek audio z niego. Możesz napisać własną lub skorzystać z implementacji strony trzeciej. W rzeczywistości ffmpeg jest dużą strukturą, która zawiera wszystkie niezbędne kody dla większości kodeków i protokołów. Jednak w twoim przypadku znajdź prosty depekser RTP.

  2. Gdy masz dostęp do zakodowanych klatek, użyj dekoder audio (dostępny jako biblioteki) do dekodowania ramek lub sprawdzić, czy platforma obsługuje ten kodek bezpośrednio do odtwarzania

  3. Gdy masz dostęp do zakodowanych ramek , w iOS możesz użyć AVFoundation, aby grać tak samo.

Jeśli szukasz w łatwy sposób to zrobić, może być użycie realizacji przez osoby trzecie, takie jak http://audiokit.io/

Powiązane problemy