如何在iOS设备中接收从RTP URL流式传输的RTP数据包? (例如rtp://@225.0.0.0)

前端之家收集整理的这篇文章主要介绍了如何在iOS设备中接收从RTP URL流式传输的RTP数据包? (例如rtp://@225.0.0.0)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试从RTP URL流式传输RTP数据包(正在流式传输音频),例如RTP://@225.0.0.0
经过如此多的研究后,我有点在我的设备中流式传输URL并使用 https://github.com/maknapp/vlckitSwiftSample进行播放.
这只是播放流数据,但没有任何存储数据的功能.

从研究和其他来源,我发现很多内容和简单的信息应该有助于流式传输Packet over RTP并将其存储在iOS设备中.

我试过以下链接.

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

这两个甚至没有编译,因为POD问题其他项目或指南只是给我参考RTSP流而不是RTP流.

如果有人能给我们一个指导或任何想法,我们如何能够实现这些东西,那么我们将不胜感激.

解决方法

首先,您需要了解其工作原理.

发件人即RTP流的创建者可能正在执行以下操作:

>使用数据源:如果是音频,则可以是麦克风或音频样本或文件
>使用AAC或Opus等音频编解码器对音频进行编码.
>使用RTP打包器从编码音频帧创建RTP数据包
>使用UDP等传输层发送这些数据包

诸如RTSP之类的协议提供必要的信令信息以提供更好的流信息.通常RTP本身是不够的,因为在RTCP的帮助下处理拥塞控制,反馈,动态比特率等事情.

无论如何,为了存储传入流,您需要执行以下操作:

>使用RTP解包器从中获取编码的音频帧.您可以自己编写或使用第三方实现.事实上,ffmpeg是一个大框架,拥有大多数编解码器和协议的所有必需代码.但是对于您的情况,找一个简单的RTP解包器.可能存在与特定编解码器对应的标头,以确保您引用正确的RFC.
>一旦访问了编码帧,就可以在媒体容器(如m4a或ogg)中编写相同的内容,具体取决于流中使用的音频编解码器.

要播放流,找一个简单的RTP解包器.
>一旦您可以访问编码的帧,使用音频解码器(可用作库)来解码帧或检查您的平台是否支持该编解码器直接播放
>一旦您可以访问已解码的帧,在iOS中,您可以使用AVFoundation播放相同的内容.

如果您正在寻找一种简单的方法,可以使用第三方实现,例如http://audiokit.io/

猜你在找的iOS相关文章