2012-07-20 77 views
3

我打算開發基於聊天的移動應用程序,允許視頻聊天。我正在使用HTML5,JavaScript和PhoneGap。使用phoneGap,我可以訪問移動攝像頭,捕捉視頻,保存視頻並上傳到服務器。我已經完成了它的android。但我需要直播視頻。有沒有解決方案? 注意:它不是任何Android本機應用程序。實況視頻廣播

+0

我發現了一些鏈接暗示它不可能與PhoneGap stackoverflow.com/questions/11573920/live-video-broadcasting https://groups.google.com/forum/#!topic/phonegap/kaK-KtqPnZc我是也嘗試相同類型的應用程序,所以請發表評論,如果你發現有用的東西。或嘗試使用Sencha,Titanium或Rho手機。 – 2012-10-16 05:40:00

回答

2

您沒有指定您當前正在使用什麼工具來進行視頻捕捉。 AFAIK,目前的WebView還不支持WebRTC,這是W3標準,很快就能讓你訪問HTML5代碼中的視頻幀。所以我假設你正在使用PhoneGap的navigator.device.capture.captureVideo工具。

在Android上,captureVideo創建3gp文件。 3gp的問題是它們在捕獲時不能流式傳輸或播放:文件的MOOV原子是解析其中的視頻幀所必需的,並且僅在文件中的所有幀都被編碼後才被寫入。因此,您必須先停止錄製,然後才能使用該文件。

您在HTML5中的最佳拍攝方式是實現一個捕獲視頻的短片段(3-5秒?)的循環,然後將其發送到服務器,同時捕獲下一個塊。服務器將需要將剪輯連接到可以與流媒體服務器進行廣播的單個文件。這會使廣播的延遲增加幾秒鐘,並且在兩次單獨的塊捕捉之間的差距中,您很可能會遭受丟幀。對於某些使用情況(例如安全攝像機),這可能已足夠。

如果您的應用程序無法承受丟失幀的問題,我看不到任何其他選擇,只能以Java語言實現視頻捕獲和流式傳輸,作爲PhoneGap插件。

+0

非常感謝您的回答。現在我正在嘗試做的是,我正在使用phonegap,但每當用戶嘗試視頻通話時,我都會將控制權轉移給Android本機功能。我使用Android Mediarecorder捕捉視頻,通過它我可以完全控制錄製。但我只能將視頻保存在本地文件中。我需要流式傳輸它。有沒有辦法做到這一點。我找到了一個解決方案[Here](http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system)。但我還沒有嘗試過。 – Abhishek 2012-07-30 04:31:37

+0

任何使用3GP或MP4作爲文件格式的解決方案都將成爲直播的問題,因爲這些文件在最終確定之前無法播放(MOOV原子需要使用幀偏移信息完成)。我見過一個項目,通過將視頻轉換爲可以實時流式傳輸的FLV,即http://code.google.com/p/ipcamera-for-android/ - 但請注意它(1 )是GPL並且(2)使用JNI – onon15 2012-07-30 07:09:36

1

見Spydroid http://code.google.com/p/spydroid-ipcamera/

它使用與您發現特殊的FileDescriptor的解決方案。基本上他們讓視頻編碼器用H.264編寫一個.mp4文件到寫入時調用你的代碼的特殊文件描述符。然後,他們剝離MP4標頭並將H.264 NALU轉換爲RTP數據包。