2013-07-28 2 views
1

나는 ASHX 처리기를 가지고 있으며 클라이언트와 함께 오디오 (wav) 파일을 스트리밍하려고합니다. 스트리밍하기 전에 BASS.net을 사용하여 오디오에 효과를 적용합니다.ASHX가 클라이언트에 즉시 응답을 보냅니다.

문제는 BASS 스트림에서 읽기가 약간의 시간이 걸리는 것입니다.

Stream outStream = context.Response.OutputStream; 
int length = 0; 
context.Response.Buffer = true; 
context.Response.ContentType = "audio/mpeg"; 
short[] data = new short[32768]; 
WaveWriterStream WW = new WaveWriterStream(outStream, bassStream); 
do { 
    length = Bass.BASS_ChannelGetData(bassStream, data, 32768); 
    if (length > 0) 
    WW.Write(data, length); 
} while (length > 0); 

루프가 완료 될 때까지 ... 꽤 오랜 시간 당신이 audioplayer의 브라우저를 클릭하고 뭔가 듣고 싶은 경우 약 8 초 정도 소요 : 여기

는 코드입니다.

각 쓰기 작업 후에 Flush()을 추가했지만 아무 것도 변경되지 않았습니다.

고객 측에서는 soundmanger2를 사용하여 오디오 스트림을 재생합니다.

soundManager.setup({ 
    url: 'soundmanagerv297a-20130512/swf/', 
    waitForWindowLoad: true, 
    ontimeout: function() { 
    soundManager.useHTML5Audio = true; 
    soundManager.preferFlash = false; 
    soundManager.reboot(); 
    }, 
    flashVersion: 9, // optional: shiny features (default = 8) 
    // optional: ignore Flash where possible, use 100% HTML5 mode 
    // preferFlash: false, 
    preferFlash: false, 
    onready: function() { 
    player = soundManager.createSound({ 
     id: 'mySound', 
     url: 'http://localhost:4261/AudioHandler.ashx', 
     autoLoad: true, 
     autoPlay: true, 
     onload: function() { 
     alert('The sound ' + this.id + ' loaded!'); 
     }, 
     volume: 50 
    }); 
    } 
}); 

그래서 오디오 스트림 "즉시"를 ASHX 처리기가 시작 후 서면을들을 수있는 방법이있다 :이 구성입니까?

답변

0

출력 스트림의 메소드 BeginFlush()로 해결했습니다.

관련 문제