私はUWPプロジェクトを持っており、Windows.Media.Audio APIを使用してファイルを再生したいとします。 FileInputNodeを使用する代わりに、さまざまなタイミングプロパティを正確に判断できるようにファイルをストリーミングします。MediaStreamSourceを使用したオーディオのデコード
IはMediaStreamSource APIを発見し、16ビットPCM 2チャンネル.wavファイルを復号化する試みで、次のコードを作っ
public async Task<Windows.Storage.Streams.Buffer> GetBuffer()
{
// check if the sample requested byte offset is within the file size
if (byteOffset + BufferSize <= mssStream.Size)
{
inputStream = mssStream.GetInputStreamAt(byteOffset);
// create the MediaStreamSample and assign to the request object.
// You could also create the MediaStreamSample using createFromBuffer(...)
MediaStreamSample sample = await MediaStreamSample.CreateFromStreamAsync(inputStream, BufferSize, timeOffset);
sample.Duration = sampleDuration;
sample.KeyFrame = true;
// increment the time and byte offset
byteOffset += BufferSize;
timeOffset = timeOffset.Add(sampleDuration);
return sample.Buffer;
}
else
{
return null;
}
}
代わりにイベント・システムを使用しての、私はいつでも発射される方法を作っ私のAudioFrameInputNodeは新しいAudioFrameが必要です。
これで、MediaStreamSampleの結果のバイト配列は、DataReaderを使用してStorageFileを単に読み出すときとまったく同じように見えます。
MediaStreamSample.CreateFromStreamAsyncは、実際にオーディオファイルをフロートバイト配列にデコードしますか?または、これはサンプルを再生するときにMediaElementで行われますか?
もしそうなら、結果のAudioBufferをFrameInputNodeに戻すことができるように、どのようにオーディオファイルをデコードできますか?