SHINN::Scribble

2009.02.06

WPF の MediaElement で早送り再生  はてなブックマーク - WPF の MediaElement で早送り再生

Microsoft .NET Framework 3.5 に含まれる Windows Presentation Foundation (WPF) を使うと,ちょっとしたアプリケーションを簡単に作ることができます。

WPF にはあらかじめ多数のコンポーネントが用意されていて,その中に「MediaElement」という Windows Media Player のようなものがあります。

「MediaElement」を利用すると,URI を指定するだけでアプリケーション内で動画を再生することが出来るのですが,早送りを行おうとしてハマりました。

MSDN の説明を見ると SpeedRatio プロパティで再生スピードを制御するようで,"2.0" を設定すると倍速になりますが,その後で "1.0" を設定しても再生スピードが元に戻りません。

いろいろと試した結果,MediaElement の Clock プロパティを使って希望する制御を行えました。

URI を指定して再生する場合は,以下の様に MediaClock オブジェクトを生成して Clock プロパティに設定し,再生を開始します。

void PlayVideo(Uri uri)
{
  mediaElement.Clock =
        new MediaTimeline(uri).CreateClock();
  mediaElement.Clock.Controller.Begin();
}

再生の一時停止や再開などは,以下のメソッドを使用します。

// 一時停止
mediaElement.Clock.Controller.Pause();

// 再生再開
mediaElement.Clock.Controller.Resume();

// 停止
mediaElement.Clock.Controller.Stop();

問題となった再生スピードの設定は次のようにして変更でき,なんどプロパティ値を変更しても正しく反映されました。

mediaElement.Clock.Controller.SpeedRatio = 3.0;

WPF,まだまだ分からないことだらけですが,使いこなせたら何かと便利そうです。

TrackBackshttp://shinn.boo.jp/mt/mt-tb.cgi/682

Comments

コメントをどうぞ




保存しますか?


 
Mail,メール  twitter,フォロー  RSS,フィード

CATEGORIES

DOWNLOADS

COCOMEISTER

ココマイスターのバッグ

 

    この日記のはてなブックマーク数  Powered by Movable Type 3.33-ja   blogram投票ボタン