マイクからサウンドをストリーミングしようとするときは、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
ます。
何か案は?