マイクからサウンドをストリーミングしようとするときは、MediaStreamSource. したがって、最初MediaStreamSourceにマイクから取得した pcm 波形を実装する必要があります。実装する必要があると思われる方法が少なくとも 2 つあります。初めに
protected override void OpenMediaAsync() {
// Create description
Dictionary<MediaStreamAttributeKeys, string> streamAttributes = new Dictionary<MediaStreamAttributeKeys, string>();
streamAttributes[MediaStreamAttributeKeys.CodecPrivateData] = output.CodecPrivateData;
audioDesc = new MediaStreamDescription(MediaStreamType.Audio, streamAttributes);
// register stream
Dictionary<MediaSourceAttributesKeys, string> sourceAttributes = new Dictionary<MediaSourceAttributesKeys, string>();
List<MediaStreamDescription> availableStreams = new List<MediaStreamDescription>();
availableStreams.Add(audioDesc);
sourceAttributes[MediaSourceAttributesKeys.Duration] = TimeSpan.FromMinutes(0).Ticks.ToString(); // whatever I put here I get the same result.
sourceAttributes[MediaSourceAttributesKeys.CanSeek] = false.ToString();
ReportOpenMediaCompleted(sourceAttributes, availableStreams);
}
これは非常にうまく機能します。私の CodecPrivateData は '01000100401F0000803E0000020010000000' (PCM 1ch 16Bits 8kHz) です。このメソッドは、ソースを次のように設定することで呼び出されます。
WaveMediaStreamSource WaveStream = new WaveMediaStreamSource(output);
mediaElement.SetSource(WaveStream);
mediaElement.Play();
Play()絶対に何も起こらない後。mediaElement は少なくとも 1 回は のメソッドGetSampleAsync()を呼び出す必要があることをお勧めしMediaStreamSourceます。しかし、そうではありません。MediaElementが をもう呼び出していないことに気付きましたMediaStreamSource。
ながら。OpenMediaAsync_ mediaElement.CurrentState_ Openingその後、 に変わりますがPlaying、再生されません。そして、それはもう変わらずに残っていPlayingます。
何か案は?