2012-05-04 6 views
0

私はVOIP Windows Phoneプロジェクト(Windows Phone用のSoft-phoneアプリケーション)に取り組んでいます。現在、私(Windows Phoneのソフトフォン)は、別のソフトフォンの音声をワン・ウェイだけ受信して聞くことができます。自分の声(RTPパケット)を別のソフトフォンに送信することはできますが、完全なノイズが含まれています。私はこのhttp://www.codeproject.com/Articles/14237/Using-the-G711-standard?msg=2573223#xx2573223xxに続き、U-lawとPCMの間のRTPパケットをエンコードしてデコードしました。デコード機能はうまく機能しましたが、エンコードはできませんでした。VOIP SIP - PCMからU-lawにエンコードするためのヘルプ

私はRTPパケットをデコードし、サンプルレート8000​​Khzで再生しました(これはU-lawフォーマットのサンプルレートです)。ここではそれを再生するために私のコードです:

SoundEffect soundEffect = new SoundEffect(buffer, 8000, AudioChannels.Mono); 
SoundEffectInstance soundInstance = soundEffect.CreateInstance(); 
soundInstance.Play(); 

とエンコーディングについて

が、私は声を記録するためのWindows Phoneのマイクを使用=> U-Law形式へのエンコードは=> RTPパケット=>送信に入れます。しかし、これらのパケットには完全なノイズが含まれ、別のソフトフォン(宛先呼び出し)はノイズとノイズのみを受信します。

マイクロフォンの録音データフォーマットは、PCM 16ビット〜16KHzです。それを解決するための解決策はありますか?

よろしくお願いいたします。

+0

キャプチャとエンコードを処理するコードはどこですか? –

+0

Windows 7でこれを実行する方法は次のとおりです。http://sipsorcery.codeplex.com/SourceControl/changeset/view/73596#1316981これは特に便利なのかどうかわかりませんが、 WP7でNAudioライブラリを使用してください。 – sipwiz

+0

@ hthoang88:あなたはオーディオを録音するためにマイクフレームワークを利用することができましたか?私は同じことをしていますし、サーバーのサポートレートは20msです。マイクロフォンのドキュメントを参照すると、バッファレートは100ms〜 320サンプルを得ることができる – Amitg2k12

答えて

0

@Rowland: 私は、それは毎回

microphone.GetData(buffer);  

用320byteを得るでしょうし、私はキュー

recordedVoice.Enqueue(buffer); 
にそれを保存したデータ

public Microphone microphone = Microphone.Default;  
private byte[] buffer; 
Queue<byte[]> recordedVoice = new Queue<byte[]>(); 

をキャプチャするためにWPのマイクを使用しました

それから、私はrecordingVoiceの各項目をU-Law形式にエンコードします(エンコード関数参照http://www.codeproject.com/Articles/14237/Using-the-G711-standard?msg=2573223#xx2573223xxからced):

byte[] encoded = G711MuLaw.G711MuLawEncode(recordedVoice.Dequeue()); 

しかし、正しくエンコードしませんでした。

@sipwiz:Silverlightではなく、C#プロジェクトであるため、thinh NAudioはWP7をサポートしていません。

@ローランド& sipwiz:あなたの回答を受け取ったとき、とてもうれしいです。ありがとうございます。

関連する問題