Прежде всего, вам нужно понять, как это работает.
Отправитель т.е. создателя RTP потока, вероятно, делает следующее:
- Использует источник данных: В случае аудио, это может быть микрофон или аудио-сэмплы или файл
- Кодирует звук с помощью аудиокодека, такого как AAC или Opus.
- использует RTP для создания пакетирования RTP пакетов из кодированных кадров звука
- использует транспортный уровень, таких как UDP, чтобы отправить эти пакеты
протоколов, таких как RTSP обеспечивает необходимую информацию сигнализации, чтобы обеспечить более полную информацию потока. Обычно самого RTP недостаточно, так как с помощью RTCP обрабатываются такие вещи, как контроль перегрузки, обратная связь, динамическая скорость передачи данных.
Во всяком случае, для того, чтобы сохранить входящий поток, вам нужно сделать следующее:
Используйте депакетирование RTP, чтобы получить кодированные звуковые кадры из него. Вы можете написать свой собственный или использовать стороннюю реализацию. На самом деле ffmpeg - это большая структура, которая имеет весь необходимый код для большинства кодеков и протоколов. Однако для вашего случая найдите простой депакетизатор RTP. Могут быть заголовки, соответствующие определенному кодеку, чтобы убедиться, что вы ссылаетесь на правильный RFC.
Как только у вас есть доступ к закодированным фреймам, вы можете написать то же самое в медиаконтейнере, таком как m4a или ogg, в зависимости от аудиокодека, используемого в потоке.
Для того, чтобы играть в поток, вам нужно сделать следующее:
Используйте депакетирование RTP, чтобы получить кодированные звуковые кадры из него. Вы можете написать свой собственный или использовать стороннюю реализацию. На самом деле ffmpeg - это большая структура, которая имеет весь необходимый код для большинства кодеков и протоколов. Однако для вашего случая найдите простой депакетизатор RTP.
После того, как вы имеете доступ к закодированным кадрам, используйте звуковой декодер (имеются в библиотеке) для декодирования кадров или проверьте, если ваша платформу поддерживает этот кодек непосредственно для воспроизведения
После того, как у вас есть доступ к декодированным кадрам , в iOS вы можете использовать AVFoundation, чтобы играть то же самое.
Если вы смотрите на простой способ сделать это, может быть использовать реализацию третьей стороны, такие как http://audiokit.io/