1

こんにちは、チャックされたエンコーディングを使用して、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>
4

0 に答える 0