【问题标题】:Realtime Audio/Video Streaming FROM iPhone to another device (Browser, or iPhone)从 iPhone 到另一台设备(浏览器或 iPhone)的实时音频/视频流
【发布时间】:2011-08-08 20:07:32
【问题描述】:

我想将实时视频从 iPhone 传输到另一台设备(桌面浏览器或另一台 iPhone,例如点对点)。

注意:目前不是一对多,而是一对一。音频可以是流的一部分,也可以通过 iPhone 上的电话呼叫。

我能想到四种方法...

  1. 在 iPhone 上捕获帧,发送 帧到媒体服务器,有 mediaserver 发布实时视频 使用主机网络服务器。

  2. 在 iPhone 上捕获帧,转换为 图片,发送到httpserver,有 浏览器重新加载中的 javascript/AJAX 来自服务器的图像以最快的速度 可能。

  3. 在 iPhone 上运行 httpServer,捕获 1 秒时长的电影 iPhone,在 iPhone 上创建 M3U8 文件,拥有其他 用户直接连接到 iPhone 上的 httpServer 直播。

  4. 开启时长为 1 秒的影片 iPhone,在 iPhone 上创建 M3U8 文件, 发送到 httpServer,有另一个 连接到 httpServer 的用户 用于直播。 This is a good answer,有人让它工作吗?

有没有更好、更有效的选择? 从 iPhone 获取数据的最快方法是什么?是 ASIHTTPRequest 吗?

谢谢大家。

【问题讨论】:

  • 你实现了吗?请帮帮我

标签: iphone video-streaming audio-streaming http-live-streaming


【解决方案1】:

发送原始帧或单个图像对您来说永远不够好(因为数据量和帧数)。您也不能通过电话合理地提供任何服务(WWAN 网络有各种防火墙)。您需要对视频进行编码,并将其流式传输到服务器,最有可能通过标准流格式(RTSP、RTMP)。 iPhone >= 3GS 上有一个 H.264 编码器芯片。问题是它不是面向流的。也就是说,它输出最后解析视频所需的元数据。这给您留下了一些选择。

  1. 获取原始数据并使用 FFmpeg 在手机上进行编码(将使用大量 CPU 和电池)。
  2. 为 H.264/AAC 输出编写自己的解析器(非常难)
  3. 以块的形式录制和处理(将增加与块长度相等的延迟,并在您开始和停止会话时在每个块之间放置大约 1/4 秒的视频)。

【讨论】:

  • 我在这上面花了很多时间,并提出了相同的 3 个选项。很高兴看到我没有疯(我选择了#3)。
  • 这里有人可以给我示例代码或指南来实现这个吗?
【解决方案2】:

我们有相似的需求;更具体地说,我们希望在 iOS 设备和 Web UI 之间实现流式视频和音频。目标是在使用这些平台的参与者之间实现高质量的视频讨论。我们对如何实现这一点进行了一些研究:

  • 我们决定使用 OpenTok 并设法在 iPad 和使用 OpenTok getting started guide 的网站之间快速实现概念验证式视频聊天。还有一个PhoneGap plugin for OpenTok,这对我们来说很方便,因为我们不做原生 iOS。

  • Liblinphone 似乎也是一个潜在的解决方案,但我们没有进一步调查。

  • iDoubs 也出现了,但我们再次认为 OpenTok 是最能满足我们需求的,因此没有更详细地研究 iDoubs。

【讨论】:

    【解决方案3】:

    “以块的形式记录和处理(将添加等于块长度的延迟,并在您开始和停止会话时在每个块之间减少大约 1/4 秒的视频)。”

    我刚刚写了这样的代码,但是通过重叠两个 AVAssetWriter 来消除这样的差距是完全可能的。由于它使用硬件编码器,我强烈推荐这种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-15
      • 2013-04-30
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多