1

2 つのウィンドウを持つ WPF アプリケーション (Visual C# 2010 Express) を作成しました。1 番目にはさまざまなボタンがあり、もう 1 つは MediaElement コントロールを使用してビデオを表示します。ボタンが押されると、それに関連付けられたビデオが再生されるか、既に再生されている場合は停止されます。

私の開発マシン (Windows 7、優れたグラフィックス カード、大量のメモリなど) では、これで問題なく動作します。私が遭遇した唯一の問題は、デバッガーに接続すると非常に不安定になることですが、正常に実行するとこれらの問題は解消されます。

残念ながら、はるかに性能の低い XP マシンで実行すると、ビデオは 1 ~ 2 fps で実行されます。これは、ビデオが Windows Media Player で正常に動作するという事実にもかかわらずです。

MediaElement コントロールのパフォーマンスが低いという報告がかなり多いようです (再生できる内容の不一致は言うまでもありません)。そのため、いくつかの代替手段を検討することにしました。

無料のライブラリ呼び出し WPF MediaKit ( http://wpfmediakit.codeplex.com ) を試してみましたが、何らかの効果があると思いましたが、XP マシンで動作するようになりましたが、私の開発でビデオを表示することを断固として拒否しましたまったく同じコードを使用しているにもかかわらず、マシン。私はまだこれが機能することを望んでいますが、舞台裏で MediaElement コントロールをまだ使用していることを考えると、それが役立つとは確信していません。

次に、wmp.dll COM コントロール (WPF ではなく Windows フォーム) を使用してみましたが、最も単純なアプリ (新しい Windows フォーム プロジェクト、フォームに追加された WMP コントロール、およびロード時に URL を設定するための 1 行のコード) を使用しても、奇妙な動作が発生します。 . デバッガーが接続されていると、複数のモニターで動作しますが、再生を開始すると、最初の数フレームで繰り返し途切れることがあり、これを解消する唯一の方法は、他のモニターに移動することです。デバッガーを使用していない場合、スタッターの問題は発生しないようですが、ビデオはメイン モニターにのみ表示され、ウィンドウをセカンダリ モニターに移動するとすぐに黒くなります。

だから私の質問は、上記のようなことを経験した人や、適切な解決策を持っている人はいますか? デバッガーが接続されていても、接続されていなくても一貫して動作するものを見つけることは特に素晴らしいことです!

4

2 に答える 2

0

WPF MediaKit は裏で MediaElement を使用しませんが、代わりに D3DImage 相互運用クラスを使用して高パフォーマンスのビデオを WPF に提供します。

XP の WPF は、パフォーマンスの点で常に当たり外れがあります。レンダリング層を調べて、WPF が完全にハードウェア アクセラレーションを実行していることを確認することをお勧めします。また、最新のビデオ ドライバーが利用可能であること、および GPU が対応していることを確認してください。

-ジェル

于 2010-09-12T18:49:50.753 に答える
0

このライブラリを試しましたか?

http://directshownet.sourceforge.net/about.html

VideoLAN メディア プレーヤーへの次の .NET インターフェイスもありますが、VLC への依存が生じます。

http://wiki.videolan.org/.Net_Interface_to_VLC

于 2010-09-08T16:54:01.410 に答える