【问题标题】:How to receive RTP Packets which are Streaming from RTP URL in iOS Device? (e.g. rtp://@225.0.0.0)如何在 iOS 设备中接收从 RTP URL 流式传输的 RTP 数据包? (例如 rtp://@225.0.0.0)
【发布时间】:2017-06-03 23:11:32
【问题描述】:

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

我从研究和其他来源中找到了许多内容和简单信息,这些内容和简单信息应该有助于通过 RTP 流式传输数据包并将其存储在 iOS 设备中。

我已尝试使用以下链接。

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

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

由于其他项目的 POD 问题或指南,这两个甚至都没有编译,只是给了我关于 RTSP Stream 而不是 RTP Stream 的参考。

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

【问题讨论】:

    标签: ios objective-c swift audio-streaming rtp


    【解决方案1】:

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

    发送者,即 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/

    【讨论】:

      猜你喜欢
      • 2018-04-28
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 2015-01-31
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多