2012-09-10 37 views
0

我有一個包含媒體文件並像收音機一樣工作的網絡服務器。 iOS客戶端應用程序需要設計爲播放這些文件。從字節數組中流式傳輸MP3

問題是我只能提供字節數組的內容,因爲有時候,web服務器本身並不擁有媒體,並在它發送時下載它。我正在考慮每x字節使用Json請求。

在iOS中是否有本地函數來處理來自字節數組的MP3流。我對iOS的知識知之甚少,所以我想確保它可以和Apple-Store兼容,以便從一個字節數組中流式傳輸MP3。

回答

0

它可以使用一個Web服務器像代理髮送一個文件,這裏是我發現,使我的服務器以相同的速率發送文件,它從第三方服務器接收文件的方法。

Private Sub SendFile(ByVal url As String) 
Dim stream As System.IO.Stream = Nothing 
Dim bytesToRead As Integer = 10000 
Dim buffer() As Byte = New Byte((bytesToRead) - 1) {} 

Try 

    Dim fileReq As System.Net.WebRequest = CType(System.Net.HttpWebRequest.Create(url), System.Net.HttpWebRequest) 
    Dim fileResp As System.Net.HttpWebResponse = CType(fileReq.GetResponse, System.Net.HttpWebResponse) 
    If (fileReq.ContentLength > 0) Then 
     fileResp.ContentLength = fileReq.ContentLength 
    End If 
    stream = fileResp.GetResponseStream 
    Dim resp As System.Web.HttpResponse = HttpContext.Current.Response 
    resp.ContentType = "application/octet-stream" 
    resp.AddHeader("Content-Disposition", ("attachment; filename=\""" + ("mp3" + "\"""))) 
    resp.AddHeader("Content-Length", fileResp.ContentLength.ToString) 
    Dim length As Integer = 1000000 
    While (length > 0) 
     If resp.IsClientConnected Then 
      length = stream.Read(buffer, 0, bytesToRead) 
      resp.OutputStream.Write(buffer, 0, length) 
      resp.Flush() 
      buffer = New Byte((bytesToRead) - 1) {} 
     Else 
      length = -1 
     End If   
    End While 
Catch 
    stream.Close() 
Finally 
    If (Not (stream) Is Nothing) Then 
     stream.Close() 
    End If 
End Try 
Response.End() 
End Sub 
1

看看matt matt gallagher的音頻流。這可能是一個好的開始。

http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html?m=1

+0

謝謝。我已經閱讀http://cocoawithlove.com/2009/06/revisiting-old-post-streaming-and.html,但看到它明確指出,此解決方法不處理未定義大小的文件。這不完全是我所說的「從字節數組流式傳輸」。不幸的是,我已經投降了,只會提供完整的mp3文件,重定向到第三方服務器上的文件,並在我的服務器不擁有它時同時下載它。 –