2009-09-08 137 views
4

我想我使用的InputStream與黑莓9000模擬器錯誤:在黑莓播放的InputStream視頻JDE

我發現了一些示例代碼,

http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800332/1089414/How_To_-_Play_video_within_a_BlackBerry_smartphone_application.html?nodeid=1383173&vernum=0

,讓您從內播放視頻黑莓應用程序。該代碼聲稱,它可以處理HTTP,但它採取了一些fandangling得到它實際上接近這樣做:

http://pastie.org/609491

具體地說,我做:

StreamConnection s = null; 
      s = (StreamConnection)Connector.open("http://10.252.9.15/eggs.3gp"); 
      HttpConnection c = (HttpConnection)s;       
      InputStream i = c.openInputStream(); 
      System.out.println("~~~~~I have a connection?~~~~~~" + c); 
      System.out.println("~~~~~I have a URL?~~~~" + c.getURL()); 
      System.out.println("~~~~~I have a type?~~~~" + c.getType()); 
      System.out.println("~~~~~I have a status?~~~~~~" + c.getResponseCode()); 

      System.out.println("~~~~~I have a stream?~~~~~~" + i); 
      player = Manager.createPlayer(i, c.getType()); 

我發現,這是我可以從HTTPConnection獲取InputStream而不會導致出現「JUM Error 104:Uncaught NullPointer Exception」的唯一方法。 (也就是說,作爲StreamConnection進行強制轉換,然後將THEN作爲HttpConnection來阻止其崩潰)。

但是,我還沒有流媒體視頻。之前,流無法創建(它會因空指針異常而崩潰)。現在,正在創建一個流,調試器聲稱它正在開始流式傳輸視頻......並沒有任何反應。沒有視頻播放。

該應用不凍結或崩潰或任何東西。我可以自由地「暫停」和「播放」,併爲兩者獲取適當的調試消息。但沒有視頻顯示。

如果我正在播放本地存儲在黑莓上的視頻,一切都很好(它實際上播放視頻),所以我知道播放器本身工作正常,我只是想知道如果可能我有什麼問題我的流?

API表示播放器可以接受InputStream。是否有它需要的特定類型?我如何查詢我的輸入流以確定它是否有效?它的存在比我以前得到的還要多。

-Jenny

編輯:我在黑莓Bold模擬器(9000)。我聽說有些版本的手機不是通過HTTP的流媒體視頻,但是,粗體。我還沒有看到這個例子。當我上網並指向黑莓可播放視頻時,它會嘗試進行流式處理,然後要求我下載文件(然後在下載後播放)。

編輯:此外,我也有一個物理黑莓粗體,但它也不能流(我去了m.youtube.com,只是爲了得到一個服務器/內容未找到錯誤)。我需要做些什麼才能傳輸RTSP內容?

+0

你可以嘗試使用WAP瀏覽器(AKA Media Net)去youtube.com嗎? Youtube也沒有在我的瀏覽器中工作,但它通過Wap。 – Fostah 2009-09-09 19:18:00

+0

另外,你有沒有嘗試只是將URL傳遞給Manager.createPlayer函數?這是一個靜態工廠,可以擔心你的初始化細節。這至少值得一試,因爲似乎沒有人提供任何幫助。 – Fostah 2009-09-09 19:45:52

+0

如果我試圖播放YouTube視頻,它會自動切換到WAP瀏覽器,但仍會給我發現服務器/內容未找到錯誤。 我確實只是嘗試傳遞URL ...這會給我一個徹底的空指針錯誤。我被告知它可以只爲RTSP提供一個URL(但不能用於HTTP?),但我仍然錯誤。這很令人沮喪。 – Jenny 2009-09-10 14:27:55

回答

2

所以,很長一段時間後,我已經確定,黑莓Bold 9000沒有做HTTP流。我最終不得不(或者說我的同事不得不)爲漸進式下載編寫自定義方法來模擬它。好吧。

1

你應該能夠實際流。首先,您必須確保您將正確的連接參數附加到您的URL(例如WiFi接口的「; interface = wifi」)。其次,你必須確保你正在傳輸的文件不是太大。如果它太大,你會得到一個HTTP錯誤,指出「文件太大」。爲了解決這個問題,你需要緩衝事物(查看DataSource API)。你應該限制你的請求大約1-2MB。在你拉出這個「塊」之後,你需要繼續請求連續的塊(帶有單獨的http連接)來繼續填充你的緩衝區。我希望這可以幫助