首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bass.net DOWNLOADPROC仅记录5秒

Bass.net DOWNLOADPROC仅记录5秒
EN

Stack Overflow用户
提问于 2018-01-17 21:37:05
回答 1查看 165关注 0票数 0

我正在尝试使用bass.net录制音频流,但使用文档示例我只能录制5秒。我怎样才能记录更多的时间?

以下是我的代码:

代码语言:javascript
复制
class Program
{
    private static FileStream _fs = null;
    private static DOWNLOADPROC _myDownloadProc;
    private static byte[] _data;

    static void Main(string[] args)
    {
        Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
        _myDownloadProc = new DOWNLOADPROC(MyDownload);
        int stream = Bass.BASS_StreamCreateURL("http://m2.fabricahost.com.br:8704/;stream.mp3", 0,
                          BASSFlag.BASS_STREAM_BLOCK | BASSFlag.BASS_SAMPLE_MONO | BASSFlag.BASS_STREAM_STATUS, _myDownloadProc, IntPtr.Zero);
    }

    private static void MyDownload(IntPtr buffer, int length, IntPtr user)
    {
        if (_fs == null)
        {
            // create the file
            _fs = File.OpenWrite("output.mp3");
        }
        if (buffer == IntPtr.Zero)
        {
            // finished downloading
            _fs.Flush();
            _fs.Close();
        }
        else
        {
            // increase the data buffer as needed
            if (_data == null || _data.Length < length)
                _data = new byte[length];
            // copy from managed to unmanaged memory
            Marshal.Copy(buffer, _data, 0, length);
            // write to file
            _fs.Write(_data, 0, length);
        }
    }
}

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-17 23:48:06

我找到了原因,bass.net默认的净缓冲区大小是5000ms(5秒)。我只是用Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_BUFFER, 10000);改变了大小,想录多少就录多少。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48302477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档