ブログ ひまつぶし

バイクとシモネタが好きなへっぽこプログラマのおバカなブログ。

Silverlightで動画再生

2010-06-05 17:58:04 | 言語・DB・開発その他
今日は、とりあえず動画再生が目的でした。
「再生」ボタン、「一時停止」ボタン、「停止」ボタンが動作したらいいや。
おお、動画が再生された!!
画面がはみ出てるので後で直そう。


なんか、今調べたら自分のホームページ(今消してるけど)のレンタルサーバーはASP.NETに対応していないとかで(そもそもOSがWindows Serverでない)、このお題のモチベーションが一気に下がったんですけど。

いや、別に自分の勉強で「こんなん作ってみたいな」で試しに作っているので、別に公開しなくてもいいし・・・。

さて、レイアウトを整えてみました。


動画表示部分のすぐ下のスライドバーは、好きなところを再生させるためのつまみで。
その右下の「Label」って書いてる部分に動画の長さと、今何秒のところを再生しているかを表示させたいのです。

やりかたは、わかりません・・・。
いや、でも。なんか方法があるでしょう。

ここまで作って、「これって本当にSilverlightなのかな」と心配になったので、実行して右クリックしてみたら「Silverlight」と表示されたので、Silverlightなのでしょう。

ちなみに上の画像を見てもわかるように、動画の長さが何秒なのか。うまく取得できていません。
「0秒」なわけないだろう。

原因を調べたら、「動画を完全に読み込む前に動画の長さを取得しようとしていた」のが悪かったようです。

動画ファイルが開かれたら「MediaOpened」イベントが発生するので、そこで
「Me.MediaElement.NaturalDuration.TimeSpan.TotalSeconds.ToStrong()」
でラベルに秒数を取得して表示しました。

次に、再生中に今何秒経過したかをリアルタイムで表示したいのです。
それを、知るには「Position」プロパティの値を取得すればいいのですが、1秒ごとに更新しようとしても、Webなのでタイマーコントロールがないのです。当たり前っちゃ当たり前なんですけど。

色々調べてみると、「OnPropertyChanged メソッド」が使えそうです。
ある特定のプロパティが変更されると、実行されるので、「Position」プロパティに関連付けて使えばよさそうです。
でも、プロパティが変更されるたびに実行されるので、パフォーマンスが落ちるそうで。
「PropertyChangedCallback デリゲート」というのを使えばよさそうです。


1時間後・・・・。


あはははは(笑)できな~い(笑)あはははは(笑)。
イライラする!!うっちゃん、イライラする!!



ああ、だれだっけ。
お笑い芸人で、レオタードで出てきてなんかとびっきりの笑顔で「イライラする!!」って言ってる人。
名前が出てこないので「イライラする」で検索したら。

「生理前、なぜかとってもイライラする。エッチな気持ちになる。とても悲しい気持ちになる。」
というのが出てきました。

ああ、そうそう。「いとうあさこ」さんだよ。
私、レオタードとかレオタードみたいな水着フェチで。
録画して、何回も巻き戻して見てた。
体のラインにぴったりな衣装がいいのです。

違うよ!!今はそんな自分の性癖をカミングアウトしてる場合ではないだろう!!
ビルドエラーの悩みを解決しなければならないんだろうっ!!

「FrameworkPropertyMetadata」を使えるようにしないとだめなので。
------------------------------------------------------------
'FrameworkPropertyMetadata' は宣言されていません。アクセスできない保護レベルになっています。
------------------------------------------------------------



MSDNの説明では「PresentationFramework.dll」の中にFrameworkPropertyMetadataクラスはあるらしい。
「ああ、これって参照設定したらいいの?」

と思って、参照設定をしようとしたら。

怒られた・・・。

イライラする(笑顔)!!うっちゃん、イライラする(笑顔)!!
うおぉ、やっべー。どうするかなぁ。

なんだよー。もともとMediaElementクラスのリンクからたどっていったら、ここに行き着いたのに「使えません」じゃだめだろう。

うっちゃん、イライラするぅ(笑顔)。

とりあえずコールバックはあきらめて別の方法を探さなきゃ。

「OnPropertyChanged メソッド」
これを試すしかない。

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。