問題タブ [ms-media-foundation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ストリームをMFSourceReaderに渡すWindows8
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に変換するラッパーを見つけて作成する必要があります。このタスクに着手する前に、自分が正しい方向に進んでいることを確認したいだけですか、それともこれを行うためのより良い方法がありますか?
前もって感謝します。また、私が愚かな間違いを犯したり、これらのライブラリを操作する上で重要な側面を見逃したりした場合は、事前にお詫び申し上げます。
audio - IMFMediaEngine とバイト配列
複数のメディア アセットを含む大きなパック ファイルがあります (1 つのファイルに 5 つの mp3 があります)。パック ファイルを読み取り、バイト配列 (および配列のサイズ) を取得しています。IMFMediaEngine
この情報を に転送して再生するにはどうすればよいですか?
現在、解凍されたファイルから を作成し、それをbyIRandomAccessStream
に変換してからに送信しています。IMFByteStream
MFCreateMFByteStreamOnStreamEx
SetSourceFromByteStream
byte* data
and を使用しsize_t size
て、メディアオブジェクトをフィードしたいだけです。出来ますか?
audio - SetSourceFromByteStream中にIMFMediaPlayerがハングする
背景:Win8用のメトロスタイルのアプリをコーディングしています。音楽ファイルを再生できる必要があります。品質とスペースの要件のため、エンコードされたオーディオ(mp3 / ogg)を使用しています。
XAudio2を使用してサウンドエフェクト(.wavファイル)を再生していますが、エンコードされたオーディオを再生する方法がわからなかったため、Media Foundation(IMFMediaPlayerインターフェイス)で音楽ファイルを再生することにしました。
メトロアプリのサンプルをダウンロードしたところ、Media Engine NativeC++ビデオ再生サンプルが必要なものに最も近いことがわかりました。
私のアプリでMediaPlayerが音楽を再生しているので、問題が発生しました。アプリを実行しているデバイスが十分に遅い場合、MediaPlayerはハングします。デバイスでリリースバージョンのアプリを実行しているときは問題なく、音楽を問題なく聞くことができます。しかし、デバッガーを接続したり、低速のデバイスで実行したりすると、MediaPlayerの再生用にバイトストリームを設定しているときにハングします。
ここにいくつかのコードがあります、あなたはそれがサンプルにかなり似ているのを見つけるでしょう:
そして、これがSetBytestreamメソッドです。
それがぶら下がっている線は次のとおりです。
アプリをデバッグしているときに、一時停止を押してスタックを確認できます。まあ、それほど多くはありませんが、少なくとも私はそれが無期限にあることがわかります
私のアプリがそのようにハングする理由はありますか?
(オプション:c++メトロスタイルのアプリでmp3/ oggを再生するためのより良い方法を知っている場合は、私に知らせてください)
winapi - MediaFoundation API ProcessMessage() が呼び出し元に戻ったときに、「ユーザーごとのサブスクリプションの所有者 SID が存在しません」というエラーが発生します。
VC++、VS2008 を使用しています。「ユーザーごとのサブスクリプションの所有者 SID が存在しません」というエラーが表示されます。
ProcessMessage() (IMFTransform) は成功ステータスを返します & コール スタックが表示されると、ProcessMessage() は一部の Microsoft DLL (evr.dll など...) 内に入り、最終的にエラー メッセージ "The owner SID on aユーザーごとのサブスクリプションは存在しません ".
なぜこのエラーが発生するのか、誰か親切に教えてもらえますか? そして、可能であれば、それを修正する方法。任意のポインターも高く評価されます。ありがとうございます。
windows-8 - Metro Style App MFT "Class Not Registered" Error
I am currently designing an app with the Metro app framework which includes a live video chat feature. I am using the GrayscaleTransform MFT included in the MediaCapture sample (at this point simply copy-and-pasted from the sample).
However, when I try to add the grayscale effect to the camera's image stream, I get a "class not registered" fatal error. I understand this is because I must 'activate and register' the media extension, but I do not know how. How do I register the media extension?
All help is greatly appreciated and I always accept an answer!
UPDATE: My GrayScale IDL file is shown below:
c++ - COM関数によって返されるhr戻り値「-1072875847」を解読するにはどうすればよいですか?
私はVC++を使用しています。COM関数によって返されるhrの戻り値は「-1072875847」です。誰かがhr値を実際の意味に解読する方法を教えてもらえますか?具体的には、「-1072875847」は何の略ですか?
少し早いですがお礼を。
windows-runtime - MFTカスタム画像フィルター
このサンプルで示すように、現在、MFT(Media Foundation Transform)を使用してWebカメラのビデオストリームをグレースケールにフィルター処理するMetroスタイルアプリを開発しています。
ただし、露出、色相、輝度、テクスチャ、ビネットなど、他のタイプのフィルタを適用したいと思います。この回答は、これを実現するためにTransformChromaメソッドを変更することになっていることを示しています。残念ながら、Y値を取得する方法がわかりません。UとVしか取得できません。NV12、YUY2、およびUYVYの形式でY値を取得するにはどうすればよいですか。
すべての助けは大歓迎です、そして私はいつも答えを受け入れます!
directx - Direct2D を使用して Direct3D11 サーフェスに描画する
D2D と D3D11 を使用してビデオにテキストを描画する Media Foundation Transform を作成しようとしています。D3D11 リソースの上に D2D RenderTarget を構築しようとしていますが、残念ながら、D2D と D3D の相互運用のほとんどの手段には D3D10 が必要ですが、これはこのプロジェクトでは利用できません。
使用する必要があるパラメーターは次のとおりです: ID3D11Device *pDevice、ID3D11Texture2D *pInput、UINT uiInIndex、ID3D11Texture2D *pOutput、および UINT uiOutIndex。
このチュートリアルのアドバイスに従おうとしましたが、ID3D10Texture2D オブジェクトが必要であることがわかりました。これも私にとっては選択肢ではありません。
windows - Windows 8 Media Foundation Transform で IMFMediaBuffer にテキストを描画する
IMFMediaBuffer オブジェクトにテキストを描画し、それを別の IMFMediaBuffer オブジェクトに書き出すにはどうすればよいでしょうか?
コンテキストは、私が MFT を構築しているということです。最初はこれを達成するために Direct2D と Direct3D11 を使用しようとしましたが、役に立ちませんでした。
media - Media Foundation エンコーダー MF_E_TRANSCODE_NO_MATCHING_ENCODER
wmvからmp4に変換しようとしています。まず、これを行うために IMFTransform を実装する必要がありますか? ビデオを MFVideoFormat_I420 に変換する必要がありますか?
私の知る限り、トポロジを正しく作成すれば、これは自動的に処理されるはずです。だから私は私のプロフィールを作成しました
http://msdn.microsoft.com/en-us/library/windows/desktop/ff819476%28v=vs.85%29.aspx
しかし、私は MF_E_TRANSCODE_NO_MATCHING_ENCODER を取得します。私はWindows 7を持っているので、エンコーダーが必要です。
また、そのチュートリアルのソースコードがどこにあるか知っている人はいますか? SDK サンプルではありません。
ありがとう。