私は、RTPペイロードとしてパッケージングするのに適したulawサンプルを得る方法を試してみるNAudioの例を見てきました。私は下のコードを使用してmp3ファイルからサンプルを生成しようとしています。驚くことではありませんが、NAudioで何をやっているのか分かりませんので、サンプルをネットワーク経由でソフトフォンに送信すると、静かです。NAudioを使用してRTPのUlawサンプルを取得
NAudioを使用してMP3ファイルから160バイト(8Khz @ 20ms)のULAWサンプルを取得する方法については、
private void GetAudioSamples()
{
var pcmStream = WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader("whitelight.mp3"));
byte[] buffer = new byte[2];
byte[] sampleBuffer = new byte[160];
int sampleIndex = 0;
int bytesRead = pcmStream.Read(buffer, 0, 2);
while (bytesRead > 0)
{
var ulawByte = MuLawEncoder.LinearToMuLawSample(BitConverter.ToInt16(buffer, 0));
sampleBuffer[sampleIndex++] = ulawByte;
if (sampleIndex == 160)
{
m_rtpChannel.AddSample(sampleBuffer);
sampleBuffer = new byte[160];
sampleIndex = 0;
}
bytesRead = pcmStream.Read(buffer, 0, 2);
}
logger.Debug("Finished adding audio samples.");
}
こんにちは、あなたはCTPでRTPを使っていましたか? – gabssnake
@gabssnake私は自分の原油RTP実装https://github.com/sipsorcery/sipsorcery/tree/master/sipsorcery-core/SIPSorcery.Net/RTPを使用しました。これは完全なRTP標準をサポートしていませんが、基本的なオーディオ伝送に十分対応しています。 – sipwiz