2014-10-30 139 views
8

我對Qt手機完全陌生,我甚至沒有一個可靠的移動開發經驗,所以很抱歉,如果我問一些明顯的問題。Qt手機視頻通話流媒體

我需要開發一個移動應用程序,該應用程序應該能夠接收類似功能的呼叫(通過互聯網,而不是GSM呼叫)。回答時,它應該開始從我們的服務器流式傳輸音頻和視頻。這個調用應該只是一種方式,也就是說,這個流從服務器到設備,但從不從設備到服務器。

所以我的問題是:

  1. 這是可能的Qt中?我選擇Qt是因爲我熟悉它,並且我想支持桌面,android和ios。也許之後的Windows手機。
  2. 當屏幕關閉且我的應用程序未運行時是否可以接聽電話?我的意思是,這是一個移動設備,應用程序不會一直運行,只有在服務器與設備之間進行通話時才應啓動。我怎樣才能做到這一點?我認爲Viber,Skype和其他消息應用程序可以做到這一點。

提前感謝:)

+0

我想你或多或少要重寫Skype,但我很渴望看到答案。 – 2014-11-01 22:20:40

+0

不,從Skype的一小部分。我只需要一些指導,在那裏看看和經驗豐富的人的建議:) – Davita 2014-11-01 22:25:40

+2

偉大的問題,我不能等待一個答案! – 2014-11-01 22:26:19

回答

4

1 - 嗯,當然可以,儘管它可能不如您想要的那麼簡單和直接。Qt Multimedia確實提供了必要的類,但您必須檢查它們在您需要定位的平臺上的受支持程度。

但是,Qt類提供的級別太高,無法達到任何目的,但它們的預期用途或級別太低,因此您必須手工完成所有工作。在這方面,Qt能夠生產便攜式應用程序的好處可能不會超過使用特定平臺特定庫的易用性,這些庫提供開箱即用的視頻流。換句話說,使用Android和iOS庫編寫單獨的Android和iOS應用程序可能比單獨使用兩個Qt應用程序更容易。

但是,如果您決定使用Qt,就像我剛纔提到的那樣,您只剩下一個選項 - 自己完成大部分工作。這意味着您應該使用QAudioRecorder錄製音頻,並定期從QCamera中將幀定期緩存到指定長度的緩衝區中,壓縮該數據(並且最好在需要考慮安全性時對其進行加密),然後通過QTcpSocket連接將其發送到客戶端,解壓縮(和解密)數據並同步播放。這當然是可行的,但正如已經提到的那樣,由於Android和iOS庫提供了幾乎「開箱即用」的解決方案,因此它將更加困難。或者,您可能決定使用第三方解決方案,爲您定位的所有平臺提供支持。

2 - 無論您的屏幕是打開還是關閉 - 這將是對特定於平臺的API的調用,所以請求將其打開或保持打開一段給定的時間。無論您的應用程序是否在設備上運行,這都很簡單 - 只要嘗試與設備上的客戶端建立TCP連接,如果成功了,客戶端仍在運行。如果您希望在應用程序未運行時接收呼叫,則必須實施一個始終運行的特定於平臺的服務,並在收到呼叫時啓動應用程序。

3

Qt的移動將幫助你在你的應用程序的UI,但是你將不得不寫你要使用的每個平臺的一些本地代碼。請注意,Qt的擴展速度很快,您可能無需在即將推出的Qt版本中使用特定於平臺的本地代碼弄髒自己的手。

是的,當您的應用程序通過創建後臺服務關閉應用程序時,您可以收到VoIP電話(但據我所知目前爲止,Qt並未爲您完成這項工作,您需要本機完成),它是Skype和Viber的工作方式。

1

按照我知道的使用qt開發新Blackberry10 OS在VoIP SDK。有一個關於VoiP調用qt的源代碼。我仍在搜索視頻通話。

檢查下面的鏈接,可能會有幫助

1) Blackberry Developer Blog

(2) PjSip Blog

(3)Download Source Code

我不知道如何使用qt語言開發的應用程序在Androidiosdesktop

但我建議用所有母語開發應用程序,而不是qt。

+0

除了這個實際上是「鏈接唯一的答案」,你的建議沒有任何意義 - Qt是本機C++代碼,它的速度是最快的,在Android上比Java快得多。 – dtech 2014-11-08 12:36:35

+1

另外,'qt'不是一種語言... – dtech 2014-11-08 13:11:55