ios - 发送大尺寸图像、视频和音频时 XMPP 客户端断开连接

标签 ios video xmpp file-transfer xmppframework

我已经使用 robbiehanson xmpp 示例实现了 xmpp。我可以聊天,也可以发送图片。我发送的图像被转换为​​ nsdata 并进一步转换为 Base64String,然后用

发送字符串

[self.xmppStream sendElement:message];

这样,如果图像尺寸较小,我可以立即发送,但如果图像尺寸较大,两个 xmpp 用户将断开连接并且文件不会传输。视频和音频也会发生同样的事情。虽然我可以使用

压缩图像
UIImageJPEGRepresentation(image,0.005);

但是视频和音频怎么传,尺寸明显就大了。我已阅读有关 XEP - 0065 和 XEP - 0096 的文档,但无法以正确的方式实现它。请告诉我为什么用户会断开连接,为什么我无法使用 base64 传输大文件,并分享可以帮助我传输视频和音频的代码。

非常感谢您的帮助。

最佳答案

虽然 XMPP 允许传输少量二进制数据,但建议“带外”共享大文件或视频/音频流,并使用 XMPP 作为 signaling protocol - 您只需发送 http://或 rtp://链接,您好友的客户端就会下载它,或开始播放给定流中的音频/视频。您可以以任何形式发送该链接,但有一些“标准草案”XMPP 扩展,允许与现有客户端兼容:

  1. > XEP-0066: Out Of Band Data - 简单的扩展,您只需将 URL 附加到标准 <message />元素。
  2. > XEP-0095: Stream InitiationXEP-0166: Jingle - 这些是“元”规范,描述客户如何“协商”他们支持的功能,选择他们喜欢的数据共享方式(ibboobbytestreamsjingle rtp,等等),发现打开 TCP 端口或中介代理、NAT 穿越等。

因此,如果您只想共享文件 - 通过任何现有的文件共享服务共享它并发送 URL,如第一个 XEP 中所述。如果您想构建大型服务或 VOIP 应用程序 - 使用 SI 或 Jingle。但是没有人会阻止您创建自己的 XMPP 扩展,这可能更易于实现。 Here是一个自定义的 XMPP 扩展,它不是由 XMPP 社区开发的,但被 XSF 接受为实验性的,你也可以检查它。

关于ios - 发送大尺寸图像、视频和音频时 XMPP 客户端断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22803896/

相关文章:

ios - 我应该在 block 内使用哪个 NSAssertion?

ios - 如何在 IOS 中使用字典搜索核心数据..?

ios - 合并视频但 AVAssetExportSession 从未完成

facebook - 替代 v2.0 中的 Facebook Chat API?

android - 无法连接到 ejabberd 服务器 : unknown host exception

ios - 添加图像时应为 ',' 分隔符

支持点击对焦的 iOS 设备

php - 来自自定义 ZM 分支的 MP4 视频上的 Zoneminder 水印

audio - 从OpenTok服务器下载的视频没有声音

php - Openfire 使用 URL 添加用户