2012-12-18 101 views
4

我需要爲Android實現視頻DASH客戶端。Android MediaPlayer從InputStream中讀取

在這個時候,我還沒有發現除了寫在一個臨時文件中的任何InputStream解決方案,然後讀取該文件。當然,這個解決方案根本沒有效率。我想用OutputStream來使用它的FileDescriptor作爲數據源。但我不能夠使用有效的FileDescriptor,而無需創建一個現有的文件...

因爲DASH協議,客戶端具有充電讓所有的(小)段的,所以我真的需要找一個直接從內存中讀取媒體的方式。也許唯一的解決方案是使用JNI,但我真的不知道如何。

要恢復我打開每一個建議。唯一的限制是:

  • 起初我有一個InputStream
  • 這可以是任何中間操作,但更有效地
  • 獲取有效的輸入養活MediaPlayer

這似乎很基本,但我找不到任何方法來實現這一目標。謝謝。

+0

您是否找到解決方案?我嘗試使用PipedInputStream和PipedOutputStream來解決這個問題,但他們沒有FileDescriptor來獲取和使用MediaPlayer.setDataSource方法。我也嘗試從PipedInputStream創建一個URI,但還沒有成功。 – Derzu

+0

@Derzu其實我在這上面花了很多時間,最後我放棄了......但讓我知道如果你找到解決方案,請。 – FabiF

+0

我找到了解決方案,但我仍在開發。是創建一個HTTP本地服務器,其中的視頻數據源來自輸入流。所以MediaPlayer從http uri讀取。硒這個帖子:http://stackoverflow.com/questions/9257364/modifying-fileinputstream-for-mediaplayer-setdatasource/9428462 – Derzu

回答

0

Derzu是正確的,本地代理可以做到這一點。看到我的回答here。隨意問任何問題。