web-dev-qa-db-ja.com

HTML5ビデオシーク

ビデオプレーヤーを特定の時間にスキップ/シークさせるにはどうすればよいですか。私はこれを試してみましたが、ページが最初に読み込まれたときに(Chromeで)機能しますが、他のブラウザーでは機能しません。フラッシュフォールバックもありますが、これは苦痛かもしれませんが、今のところ優先順位はHTML側です。主な問題は、Chromeの外部では機能しないことです。

編集:これはIE9、ChromeおよびFirefoxで機能するようになりました。ただし、フラッシュフォールバックでは機能しません!

以下はこれまでの私の試みです。

これまでに次のJSを使用しています。

   <script language="javascript">
     $(function () {
     var v = $("#video").get(0);
         $('#play').click(function(){
                v.play();
         });

        $('.s').click(function(){
            alert("Clicked: "+$(this).html() +"- has time of -" + $(this).attr('s') );
            v.currentTime = $(this).attr('s'); v.play();
        });
     });
    </script>

以下にリンクしているもの:

<video id="video" controls width="500">  
        <!-- if Firefox -->  
        <source src="video.ogg" type="video/ogg" />  
        <!-- if Safari/Chrome-->  
        <source src="video.mp4" type="video/mp4" />  
        <!-- If the browser doesn't understand the <video> element, then reference a Flash file. You could also write something like "Use a Better Browser!" if you're feeling nasty. (Better to use a Flash file though.) -->  
        <object type="application/x-shockwave-flash" data="player.swf"
        width="854" height="504">
            <param name="allowfullscreen" value="true">
            <param name="allowscriptaccess" value="always">
            <param name="flashvars" value="file=video.mp4">
            <!--[if IE]><param name="movie" value="player.swf"><![endif]-->
            <p>Your browser can’t play HTML5 video.</p>
  </object>
    </video>

クラスsとカスタム属性s=60のボタンを「60秒」など持つコンテキストで。

14
seekToTime:function( value )
{
    var seekToTime = this.videoPlayer.currentTime + value;
    if( seekToTime < 0 || seekToTime > this.videoPlayer.duration ) 
        return;

    this.videoPlayer.currentTime = seekToTime;
}

これが私たちが使用しているシーク関数です。それはMooTools構文ですが、要点はわかります。それが役に立てば幸い。

11
longilong

jsとcssで独自のコントロールを作成したと思いますか?!したがって、javascriptからseek関数を呼び出すことができるようにswfを拡張する必要があります。外部インターフェースはあなたの友達です:actionscript/flash内:

 import flash.external.ExternalInterface; 

 ExternalInterface.addCallback( "methodName", this, method ); 

 function method() { trace("called from javascript"); }

javascriptを介してこれを呼び出す

function callAS() {
    swf.methodName();
}
1
longilong