【问题标题】:Qt mobile video call streamingQt 移动视频通话流
【发布时间】:2014-10-30 16:46:49
【问题描述】:

我对 Qt mobile 完全陌生,我什至没有扎实的移动开发经验,如果我问的很明显,很抱歉。

我需要开发一款能够接听电话的移动应用程序(通过互联网,而不是 GSM 电话)。回答后,它应该开始从我们的服务器流式传输音频和视频。调用应该只有一种方式,这意味着流从服务器到设备,但从不从设备到服务器。

所以我的问题是:

  1. 这在 Qt 中可行吗?我选择 Qt 是因为我熟悉它,我想支持桌面、android 和 ios。以后可能是 windows phone。
  2. 屏幕关闭且我的应用程序未运行时是否可以接听电话?我的意思是,这是一个移动设备,应用程序不会一直运行,它应该只在服务器到设备进行调用时启动。我怎样才能做到这一点?我认为 Viber、Skype 和其他消息应用程序可以做到这一点。

提前非常感谢:)

【问题讨论】:

  • 我认为您或多或少要求重写 Skype,但我渴望看到答案。
  • 不,一小部分来自Skype。我只需要一些指南,并从有经验的人那里获得建议:)
  • 好问题,我等不及回答了!
  • 唉,Qt 是一个大框架,但对于特定任务,它还没有提供很多帮助。

标签: android ios qt qt5 qt-mobility


【解决方案1】:

1 - 好吧,当然可以,尽管它可能不像您想要的那样简单明了。 Qt Multimedia 确实提供了必要的类,但您必须检查它们在您需要定位的平台上的支持程度。

但是,Qt 提供的类要么太高级而无法满足其预期目的之外的任何目的,要么太低级,因此您必须手动实现几乎所有内容。在这方面,Qt 能够生成便携式应用程序的好处可能不会超过使用某些平台特定库的易用性,这些库提供开箱即用的视频流。换句话说,使用 Android 和 iOS 库编写单独的 Android 和 iOS 应用程序可能比同时在两者上运行的单个 Qt 应用程序更容易。

但是以防万一您决定使用 Qt,正如我暂时提到的那样,您只有一个选择 - 自己完成大部分工作。这意味着您应该使用QAudioRecorder 录制音频,并在给定长度的缓冲区中定期从QCamera 捕获帧,压缩该数据(如果考虑到安全性,最好对其进行加密),通过@987654323 将其发送给客户端@connection,解压(解密)数据并同步播放。这当然是可行的,但正如已经提到的,这将更加困难,因为 Android 和 iOS 库提供了几乎“开箱即用”的解决方案。或者,您可能决定使用第三方解决方案,该解决方案为您所针对的所有平台提供支持。

2 - 无论您的屏幕是打开还是关闭 - 这将是对特定平台 API 的调用,因此在给定持续时间内打开或保持打开它的请求也是如此。无论您的应用程序是否在设备上运行,这都很容易 - 只需尝试与设备上的客户端建立 TCP 连接,如果成功则客户端正在运行。如果您想在应用未运行时接收呼叫,则必须实现一个平台特定的服务,该服务始终运行并在收到呼叫时启动您的应用。

【讨论】:

    【解决方案2】:

    从参考资料中可以看出,QT Mobility 没有支持 VoIP 的框架: http://doc-snapshot.qt-project.org/qt-mobility/

    您可以在本地创建应用程序的 VoIP 框架(这需要对可用的各种音频和视频框架有很好的了解),但还有另一种方法 将使用同时支持 iOS 和 Android 的 VoIP SDK,例如 Twilio 移动客户端 https://www.twilio.com/client/mobile

    【讨论】:

      【解决方案3】:

      Qt mobile 将在应用程序的 UI 方面为您提供帮助,但是您必须为要使用的每个平台编写一些本机代码。请注意,Qt 正在快速扩展,您可能不需要在即将发布的 Qt 版本中使用特定于平台的本机代码。

      是的,当您的应用程序关闭时,您可以通过创建后台服务来接收 VoIP 呼叫(但据我所知,到目前为止 Qt 并不能为您完成这项工作,您需要在本地完成),它是Skype 和 Viber 的工作方式。

      【讨论】:

        【解决方案4】:

        据我所知,新的Blackberry10 操作系统使用qt 进行开发。有一个关于VoiP 在qt 中调用的源代码。我还在搜索视频通话。

        检查下面的链接,可能会有所帮助

        1) Blackberry Developer Blog

        (2) PjSip Blog

        (3)Download Source Code

        我不知道如何使用qt 语言开发Androidiosdesktop 的应用程序。

        但我建议用所有本地语言而不是 qt 开发应用程序。

        【讨论】:

        • 除了这实际上是一个“仅链接的答案”之外,您的建议没有意义 - Qt 是本机 C++ 代码,它的速度与它一样快,绝对比 Android 上的 Java 快。跨度>
        猜你喜欢
        • 2017-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多