如何在naudio中按帧播放流式mp3帧

时间:2015-11-27 15:46:59

标签: c# naudio live-streaming

我正在尝试在录制时以mp3格式直播音频,但我无法获得良好的流媒体质量。

我正在做的是从" WI_DataAvailable"获得10秒的PCM数据。并将其转换为MP3然后在网络中发送帧。它在10秒的数据之间产生很少的沉默。

我喜欢在录制时按帧传输连续的mp3帧。有没有正确的方法?

1 个答案:

答案 0 :(得分:0)

鉴于LameMP3FileWriter需要Stream写入,我建议实现自己的流类,并简单地将所有以Write方法到达的数据写入UDP。然后你可以将它传递给LameMP3FileWriter。

这是一个简单的流类,可以帮助您入门。您需要填写方法Write以及可能Flush的空白。我想你可以将其他所有内容保留为NotImplemented。

public class UdpStream:Stream
{
    public override int Read(byte[] buffer, int offset, int count)
    {
        //you'll definitely need to implement this...
        //write the buffer to UDP
    }

    public override void Flush()
    {
        //you might need to implement this
    }

    public override bool CanRead
    {
        get { return false; }
    }

    public override bool CanSeek
    {
        get { return false; }
    }

    public override bool CanWrite
    {
        get { return true; }
    }

    public override long Seek(long offset, SeekOrigin origin)
    {
        throw new NotImplementedException();
    }

    public override void SetLength(long value)
    {
        throw new NotImplementedException();
    }


    public override void Write(byte[] buffer, int offset, int count)
    {
        throw new NotImplementedException();
    }

    public override long Length
    {
        get { throw new NotImplementedException(); }
    }

    public override long Position { 
        get{throw new NotImplementedException();} 
        set{throw new NotImplementedException();} 
    }
}