首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iOS设备中接收来自RTP的RTP数据包?(例如rtp://@225.0.0.0)

如何在iOS设备中接收来自RTP的RTP数据包?(例如rtp://@225.0.0.0)
EN

Stack Overflow用户
提问于 2017-01-19 09:52:42
回答 1查看 3K关注 0票数 9

我正在尝试从RTP URL (例如rtp://@225.0.0.0 )流RTP数据包(它是音频流),经过如此多的研究之后,我在我的设备中流了一些URL,并使用https://github.com/maknapp/vlckitSwiftSample播放了它。这只是播放流数据,但没有任何存储数据的功能。

从研究和其他来源中,我发现了大量的内容和简单的信息,应该有助于在RTP上流包并将其存储在iOS设备中。

我试过用下面的链接。

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

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

如果有人能给我们一个指导或任何想法,我们可以如何实施这些事情,那么它将是值得赞赏的。

EN

回答 1

Stack Overflow用户

发布于 2017-01-30 01:57:34

首先,您需要了解这是如何工作的。

发送方,即RTP流的创建者可能正在执行以下操作:

  1. 使用数据的源:如果是音频,这可能是麦克风或音频示例或文件。
  2. 使用诸如AAC或Opus等音频编解码器对音频进行编码。
  3. 使用RTP分组程序从编码的音频帧创建RTP数据包。
  4. 使用传输层(如UDP )发送这些数据包。

RTSP等协议为提供更好的流信息提供了必要的信令信息。通常,RTP本身是不够的,因为诸如拥塞控制、反馈、动态比特率等都是通过RTCP来处理的。

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

  1. 使用RTP脱扣器将编码的音频帧从其中提取出来。您可以编写自己的或使用第三方实现。实际上,ffmpeg是一个很大的框架,它为大多数编解码器和协议提供了所有必要的代码。但是,对于您的情况,可以找到一个简单的RTP清除器。可以有对应于特定编解码器的头,以确保引用正确的RFC。
  2. 访问编码帧后,可以根据流中使用的音频编解码器在媒体容器(如m4a或ogg )中写入相同的帧。

为了播放该流,您需要执行以下操作:

  1. 使用RTP脱扣器将编码的音频帧从其中提取出来。您可以编写自己的或使用第三方实现。实际上,ffmpeg是一个很大的框架,它为大多数编解码器和协议提供了所有必要的代码。但是,对于您的情况,可以找到一个简单的RTP清除器。
  2. 访问编码帧后,使用音频解码器(可作为库)解码帧,或检查平台是否支持直接播放该编解码器。
  3. 在iOS中,一旦您能够访问解码的帧,就可以使用AVFoundation来播放相同的内容。

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41738644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档