IMFSourceReader
ユーザーの音楽ライブラリから.mp3ファイルを取得し、Windows Media Foundationを使用して、エキサイティングなDSPアクション用のPCM値を含む配列に変換できるプログラムを作成しようとしています。しかし、私は問題を抱えています。
私のソリューションには2つのプロジェクトがあります。UIコードを含むC#/XAMLライブラリとMediaFoundationおよびXAudio2を操作するためのネイティブコードを含むC++ライブラリに加えpublic ref
て、C#コードが対話できるいくつかのクラス。
MFCreateSourceReaderFromURL
アプリマニフェストに音楽ライブラリ機能がある場合でも、ACCESS DENIED HRESULTが返されるため、使用できません。したがって、またはのいずれかを使用する必要があるようMFCreateSourceReaderFromByteStream
ですMFCreateSourceReaderFromMediaSource
。さて、を使用して音楽ファイルにアクセスし、他のいくつかのストリームタイプと一緒にまたはWindows.Storage.KnownFolders.MusicLibrary
を取得するのは簡単ですが、これをまたはまたは何らかの方法でPCM値を持つバイト配列にデコードするにはどうすればよいですか?Stream
IInputStream
IMFByteStream
IMFMediaSource
また、音楽ファイルをアプリフォルダーに再保存して使用できるようMFCreateSourceReaderFromURL
にするか、Media Foundationでの作業を直接バイパスしてWindows.Media.Transcoding
、PCMへの変換などを使用することもできます。ただし、これがトランスコーディング名前空間の目的であるかどうかはわかりません。
Media Foundationのドキュメントを何時間も読んでいて、MFCreateMFByteStreamOnStream
COMからIStream
バイトストリームに変換できる希望がちらりと見えましたが、.netストリームをIStreamに変換するラッパーを見つけて作成する必要があります。このタスクに着手する前に、自分が正しい方向に進んでいることを確認したいだけですか、それともこれを行うためのより良い方法がありますか?
前もって感謝します。また、私が愚かな間違いを犯したり、これらのライブラリを操作する上で重要な側面を見逃したりした場合は、事前にお詫び申し上げます。