0

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

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 16bit - 16KHzです。それを解決するのに役立つ解決策はありますか?

よろしくお願いします。

4

1 に答える 1

0

@Rowland: WP のマイクを使用してデータをキャプチャしました

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

毎回320byteになります

microphone.GetData(buffer);    

そして私はそれをキューに保存しました

recordedVoice.Enqueue(buffer);

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

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

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

@sipwiz : NAudio は WP7 をサポートしていないと思います。これは Silverlight ではなく C# プロジェクトであるためです。

@Rowland & sipwiz : 返信をいただいてとてもうれしいです。どうもありがとうございました。

于 2012-05-05T14:16:12.797 に答える