質問する質問する
 

質問動画プレーヤーでのシーク操作でのエラー

  • 2009年7月15日 1:51evc-ishida ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    はじめまして。
    現在 silverlight2 を使用して動画プレーヤーの開発を行っています。開発環境は、silverlight2でExpression blend2 を使用してC#で開発しています。
    概ね作成できたのですが、以下の条件で(4001エラーが発生します)

    再生を開始する⇒一時停止を行う⇒2分程度一時停止のまま放置しておきます⇒再び再生を開始して、シークで早送りをする⇒4001エラーが発生します
    連続で再生、一時停止、シークなどの操作を行っても問題は起きていません。どのようなことが原因として考えられますでしょか?
    今回のケースではVODが対象となります。


    シークのところのソースは下記のように記述しています。

    Seek_Slider_ThumbDragStarted ⇒  シークの開始処理
    Seek_Slider_SeekValueChanged ⇒ シークの終了処理
        videomedia ⇒ MediaElement

    ---------------------
            private void Seek_Slider_ThumbDragStarted(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
            {
                if (isPlaying) {
                    this.videomedia.Pause();
                }
            }

            private void Seek_Slider_SeekValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
            {
                RoutedPropertyChangedEventArgs<double> changedEventArgs = (RoutedPropertyChangedEventArgs<double>)e;
                TimeSpan position = new TimeSpan(0, 0, 0, 0, (int)(changedEventArgs.NewValue * 1000));
                this.videomedia.Position = position;

                if (isPlaying) {
                    this.videomedia.Play();
                }
            }
    ------------------


    よろしくお願いします。

すべての返信

  • 2009年8月2日 15:02sleeping_coelacanth ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    再び再生を開始した直後は再生できるのに、そこからシーク処理を行うとエラーがでるということでしょうか?
    再現できてないので、思いつく原因を列挙

    MediaElementのURLが正しい値でなくなっており再生できない
    シーク時やイベント毎に値を出力すると何か値がおかしいことがあるのかも?

    途中でサーバーが接続不能になる
    どのような形で検証しているのかにもよりますが、動画をおいたサーバーとの通信が不能になった場合等に4001になるかも

    GCで値がクリアされた
    可能性が低いですがガベージコレクションで一時変数がクリアされてしまったとか、これもエラーが出た瞬間のシーク処理中の値をデバックすることで判定できそうですね。


    情報としてはシーク時にだけエラーになるのか、シーク後に再度Playすると再生できるのか?
    デバックはどのような環境(ローカル? Webサービスを生成している?)等の情報があるとより回答しやすいかもしれませんね。
    あまり力になれず申し訳ないです。