从 iPhone 到另一台设备(浏览器或 iPhone)的实时音频/视频流
Posted
技术标签:
【中文标题】从 iPhone 到另一台设备(浏览器或 iPhone)的实时音频/视频流【英文标题】:Realtime Audio/Video Streaming FROM iPhone to another device (Browser, or iPhone) 【发布时间】:2011-08-08 20:07:32 【问题描述】:我想将实时视频从 iPhone 传输到另一台设备(桌面浏览器或另一台 iPhone,例如点对点)。
注意:目前不是一对多,而是一对一。音频可以是流的一部分,也可以通过 iPhone 上的电话呼叫。
我能想到四种方法...
在 iPhone 上捕获帧,发送 帧到媒体服务器,有 mediaserver 发布实时视频 使用主机网络服务器。
在 iPhone 上捕获帧,转换为 图片,发送到httpserver,有 浏览器重新加载中的 javascript/AJAX 来自服务器的图像以最快的速度 可能。
在 iPhone 上运行 httpServer,捕获 1 秒时长的电影 iPhone,在 iPhone 上创建 M3U8 文件,拥有其他 用户直接连接到 iPhone 上的 httpServer 直播。
开启时长为 1 秒的影片 iPhone,在 iPhone 上创建 M3U8 文件, 发送到 httpServer,有另一个 连接到 httpServer 的用户 用于直播。 This is a good answer,有人让它工作吗?
有没有更好、更有效的选择? 从 iPhone 获取数据的最快方法是什么?是 ASIHTTPRequest 吗?
谢谢大家。
【问题讨论】:
你实现了吗?请帮帮我 【参考方案1】:发送原始帧或单个图像对您来说永远不够好(因为数据量和帧数)。您也不能通过电话合理地提供任何服务(WWAN 网络有各种防火墙)。您需要对视频进行编码,并将其流式传输到服务器,最有可能通过标准流格式(RTSP、RTMP)。 iPhone >= 3GS 上有一个 H.264 编码器芯片。问题是它不是面向流的。也就是说,它输出最后解析视频所需的元数据。这给您留下了一些选择。
-
获取原始数据并使用 FFmpeg 在手机上进行编码(将使用大量 CPU 和电池)。
为 H.264/AAC 输出编写自己的解析器(非常难)
以块的形式录制和处理(将增加与块长度相等的延迟,并在您开始和停止会话时在每个块之间放置大约 1/4 秒的视频)。
【讨论】:
我在这上面花了很多时间,并提出了相同的 3 个选项。很高兴看到我没有疯(我选择了#3)。 这里有人可以给我示例代码或指南来实现这个吗? ***.com/questions/5062266/…【参考方案2】:我们有相似的需求;更具体地说,我们希望在 ios 设备和 Web UI 之间实现流式视频和音频。目标是在使用这些平台的参与者之间实现高质量的视频讨论。我们对如何实现这一点进行了一些研究:
我们决定使用 OpenTok 并设法在 iPad 和使用 OpenTok getting started guide 的网站之间快速实现概念验证式视频聊天。还有一个PhoneGap plugin for OpenTok,这对我们来说很方便,因为我们不做原生 iOS。
Liblinphone 似乎也是一个潜在的解决方案,但我们没有进一步调查。
iDoubs 也出现了,但我们再次认为 OpenTok 是最能满足我们需求的,因此没有更详细地研究 iDoubs。
【讨论】:
【参考方案3】:“以块的形式记录和处理(将添加等于块长度的延迟,并在您开始和停止会话时在每个块之间减少大约 1/4 秒的视频)。”
我刚刚写了这样的代码,但是通过重叠两个 AVAssetWriter 来消除这样的差距是完全可能的。由于它使用硬件编码器,我强烈推荐这种方法。
【讨论】:
以上是关于从 iPhone 到另一台设备(浏览器或 iPhone)的实时音频/视频流的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 node.js 和 socket.io 将文件从 iPhone 发送到另一台 iPhone?