ビデオプレーヤーを特定の時間にスキップ/シークさせるにはどうすればよいですか。私はこれを試してみましたが、ページが最初に読み込まれたときに(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秒」など持つコンテキストで。
seekToTime:function( value )
{
var seekToTime = this.videoPlayer.currentTime + value;
if( seekToTime < 0 || seekToTime > this.videoPlayer.duration )
return;
this.videoPlayer.currentTime = seekToTime;
}
これが私たちが使用しているシーク関数です。それはMooTools構文ですが、要点はわかります。それが役に立てば幸い。
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();
}