Отправка mp3 через http chunked кодирование в vb.net - PullRequest
1 голос
/ 24 февраля 2012

Привет. Я пытаюсь отправить mp3-данные по протоколу http с кодированием по частоте. Идея состоит в том, что позже 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>
...