C#でWindows Media Player ActiveX コントロールを使う その5

chakemiです。3連休なのに仕事でなにも出来ません(T T)

今日は、再びWindows Media Player ActiveX コントロールの小ネタを取り上げたいと思います。

Windows Media Player ActiveX コントロールの基本的は使い方は以前のページを参考に。 その1 その2 その3

今回は、ストリーミング再生時のバッファリング状況を表示できるようにしたいと思います。

基本的にいままでプロジェクトを改修、拡張で行いますが、今回は簡単にテストするために WindowsMediaEncoderを使ってライブストリームを再生しようと思うので 前回のその4の時に実装したシークバーの機能を削除しちゃいます。

※理由は、ライブストリームなので、currentMedia.durationプロパティから 動画の長さを取得することができないのでエラーが発生しちゃうからです。

では、簡単に実装してみたいと思います。 まず、axWindowsMediaPlayer1.URLプロパティの値をWindowsMediaEncoderへ接続するためのパスに変更します。

FormにTimerコントロールを追加し、 axWindowsMediaPlayer1コントロールにBufferingイベントを追加します。 Bufferingイベントが開始されたら、追加したTimerを開始して Timerのイベントハンドラー内でバッファー状況を更新してあげれば完成。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//WindowsMediaEncoderへ接続するためのパス
axWindowsMediaPlayer1.URL = @"http://192.168.1.113:8080";
    ~省略~

private void axWindowsMediaPlayer1_Buffering(object sender, _WMPOCXEvents_BufferingEvent e)
{
    if (e.start == true)
    {
        timer2.Interval = 100;
        timer2.Start();
    }
    else
    {
        label3.Text = ("no buffer");
        timer2.Stop();
    }

}

private void timer2_Tick(object sender, EventArgs e)
{
    label3.Text = (axWindowsMediaPlayer1.network.bufferingProgress + "%");
}

axWindowsMediaPlayer1.network.bufferingCountプロパティなんかを使うとバッファリングを起こした回数なんかも拾えます。

Comments