-1

我正在开发一个 iOS 应用程序,理想情况下将提供视频聊天功能

目前,我已经使用 AVCaptureOutput、Bonjour、NSNetServices、CFSocketStreams 和 NSStreams 设法使其在 wifi 网络中工作。将 2 个 iOS 设备(客户端和服务器)连接到同一个 wifi。

我想要实现的是通过我的专用服务器而不是通过本地 wifi 网络进行连接。所以 2 个或更多设备也可以使用 3G、LTE 等。

我想知道如何将相机从我的 iPhone 流式传输到我的远程专用服务器。我不想使用 Wowza 作为服务器,我不想要 OpenTok 或类似工具,我不想要来自 Apple 的 HTTP Live Streaming 工具(它们是“服务器到 IOS 而不是 IOS 到服务器”的工具,并且它们仅用于媒体流,不适用于实时摄像头/麦克风)

我还阅读了有关 CFHTTP 请求、NSURLConnections、JSON 和 HTML5 的信息,但我仍然不知道它们是如何工作的,或者它们是否是我需要的。

总结:

如何在我的 iPhone 和我的远程专用服务器之间建立连接,并以 30fps 的速度持续实时传输 iPhone 摄像头/麦克风?

4

1 回答 1

2

对您的问题的简短回答是,Apple 没有提供在 iOS 中执行此操作的方法 - 他们根本没有提供直接获取硬件编码帧以发送出去的方法。更长的答案是您可以,但您必须精通迭代打包和发送短片段到文件硬件编码的视频,并通过您的首选协议。

一旦解决了硬件编码帧的打包问题,就必须解决复制问题(客户端 -> 服务器 -> [多个订阅者])。由于您不想使用 Wowza,而且按照您的语调,似乎不想使用您没有编写的任何服务器,您可能应该在编写自己的服务器时阅读 RTMP 和 RTSP。我无法想象我想编写自己的 RTMP 服务器的情况,但我不会评判你。;-)

注意:我已经完成了您(似乎)正在尝试做的事情,完全按照我在第一段中描述的方式进行。我确实使用 RTMP 作为流协议,并将 h.264 硬件编码文件的短段打包到流中。我自己没有写的是将流从服务器复制到终端客户端。使用Wowza。或 nginx-rtmp。或 FMS。任何东西——如果你真的想自己写,那是你的特权,但老实说:不要。

于 2014-04-12T00:27:02.707 回答