2010-12-09 5 views
0

silverligh4를 사용하여 오디오를 녹음하고 서버의 서비스를 통해 저장하려고했습니다. 문제가 기록됩니다 .WAV 파일에 lakhs 바이트의 데이터가 스트림으로 포함되어 있습니다. 하지만이 스트림이 서비스에 전달되면 최대 1526 바이트로만 전송됩니다. web.config에서 max 속성을 설정했습니다. 클라이언트에서 스트림을 인코딩하고이 인코딩 된 스트림을 전달하고 서버에서 디코딩해야한다고 생각합니다. sileverlight 응용 프로그램에서 오디오 스트림을 인코딩하고 서버에서 어떻게 디코딩합니까? 제발 조언 해주세요. 시간 내 줘서 고마워. Nspeex 또는 CSpeex는 나를 위해 작동하지 않습니다. 어떤 사람이라도 같은 것을 구현했다면 어떻게해야할까요?Silverlight에서 음성 스트림을 압축하는 방법

+2

1526 바이트 이하로 압축 된 WAV 파일을 얻지 못할 것입니다 ... 대신 서버에 무엇이 잘못된 것인지 알아 내야합니다. – cdhowie

답변

1

WAV를 합리적인 크기로 (거래 품질 제외) 압축하는 유일한 방법은 다른 형식으로 변환하는 것입니다.

이 옵션이 맞는지 잘 모르겠지만 lame.exe를 사용하여 서버로 보내기 전에 MP3로 변환하는 것은 매우 쉽습니다. 물론 라이센스로 인해 응용 프로그램과 함께 배포 할 수 있어야합니다. 당신은 절름발이도 --decompress 옵션을 사용하여 WAV에 MP3를 변환 할 수 있습니다 MP3로 변환하기 위해이 같은 http://www.codeproject.com/KB/audio-video/madlldlib.aspx

뭔가 :

는 여기에 웨이브로 MP3를 변환하는 오픈 소스 프로그램입니다.

using System.Diagnostics; 

public string WAV2MP3(string fileName, bool waitFlag) { 

    string newFileName = fullpathDir + fileName.Replace(".wav",".mp3"); 
    string lameArgs = "-b 32 --resample 22.05 -m m \"" + 
     fullpathDir + fileName + "\" \"" + 
     newFileName + "\""; 

    ProcessStartInfo processInfo = new ProcessStartInfo(); 

    Arguments = lameArgs; 
    WindowStyle = ProcessWindowStyle.Hidden; 
    WorkingDirectory = Application.StartupPath; 

    Process startedProcess = new Process.Start(processInfo); 

    if (waitFlag) { 
     startedProcess.WaitForExit(); 
    } 
    return newFileName; 

}; 
0

저는 원시 오디오 스트림을 샘플링하고 저속으로 샘플링 한 다음 압축 된 스트림을 통해 전송합니다. 당신이 멋있게 보이고 싶다면 LAME과 같은 MP3 인코더로 압축을 풀 수 있습니다 (별도의 스레드/프로세스에서!).

관련 문제