こんにちは、チャックされたエンコーディングを使用して、http 経由で mp3 データを送信しようとしています。mp3 は後で (mp3 ピースの) ライブ ストリームになるので、コンテンツの長さはわかりません。
これは、ブラウザでアクセスすると再生できないコードです....ヘッダーファイルファイルがまったく再生されないことを認識していますが。
私が間違っているところに誰かアイデアがありますか?
Private Sub ServeAudioBlock(stream As NetworkStream)
Dim Content As Byte() = System.IO.File.ReadAllBytes("tone.mp3")
Dim sb As New System.Text.StringBuilder
sb.Append("HTTP/1.1 200 OK" + ControlChars.CrLf)
sb.Append("Content-Type: audio/mpeg" + ControlChars.CrLf)
sb.Append("Transfer-Encoding: chunked" + ControlChars.CrLf)
sb.Append(ControlChars.CrLf)
'send header
Dim Header() As Byte = Encoding.ASCII.GetBytes(sb.ToString)
stream.Write(Header, 0, Header.Length)
'send five times
For i As Integer = 1 To 5
'send length in hex
Dim SizeString As String = Hex(Content.Length)
Dim chunksize() As Byte = Encoding.ASCII.GetBytes(SizeString + ControlChars.CrLf)
stream.Write(chunksize, 0, chunksize.Length)
'send data for this chunk
stream.Write(Content, 0, Content.Length)
Next
Dim EmptyChunk As String = "0" + ControlChars.CrLf
Dim EmptyBytes() As Byte = Encoding.ASCII.GetBytes(EmptyChunk)
stream.Write(EmptyBytes, 0, EmptyBytes.Length)
Console.WriteLine("Served audio block")
stream.Close()
End Sub
HTTP アナライザーでキャプチャしている応答の最初の数行:
HTTP/1.1 200 OK
Content-Type: audio/mpeg
Transfer-Encoding: chunked
11F4
ÿûPÄ<rest of file data follows>