HTML5 视频 API:如果启用循环,则无法在最后一帧暂停
HTML5 Video API: Cannot Pause On Last Frame If Looping Enabled
如果视频在最后一帧,尝试在最后一帧暂停视频似乎不起作用。
var app = angular.module('myApp', []);
app.controller('MainCtrl', function ($scope) {
})
app.directive('someVideo', function ($window, $timeout) {
return {
controller: function($scope) {
},
link: function (scope, elm) {
scope.videoPlayer = elm[0];
scope.keyDownEvent = keyDownEvent;
scope.currentTime = 0;
scope.videoPlayer.loop = true;
angular.element($window).bind('keydown',scope.keyDownEvent);
function keyDownEvent(e){
console.log(e.keyCode);
switch(e.keyCode) {
case 32: //space
scope.videoPlayer.loop = !scope.videoPlayer.loop;
console.log('spcae: ',scope.videoPlayer.loop);
break;
case 38: //up
scope.videoPlayer.currentTime = 0;
console.log('up: ', scope.videoPlayer.currentTime);
break;
case 40: //down
scope.videoPlayer.pause();
scope.videoPlayer.currentTime = scope.videoPlayer.duration;
console.log('down: ', scope.videoPlayer.currentTime);
break;
}
}
}
}
})
body {
overflow: hidden;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<div ng-app="myApp">
<div ng-controller="MainCtrl">
<video some-video src="http://nagi.ca/u/google.mp4" autoplay></video>
</div>
</div>
http://jsfiddle.net/4bygou77/4/
回购步骤:
1) 启动 fiddle 并点击视频设置焦点
2) 使用按键:space = 切换循环,向下= 最后一帧,向上= 第一帧
结果:
启用循环:视频暂停,跳到最后一帧,然后跳到第一帧
禁用循环:视频暂停,跳转到最后一帧(我想要的结果)
改变这个
scope.videoPlayer.currentTime = scope.videoPlayer.duration;
至此
scope.videoPlayer.currentTime = scope.videoPlayer.duration - 1;
如果视频在最后一帧,尝试在最后一帧暂停视频似乎不起作用。
var app = angular.module('myApp', []);
app.controller('MainCtrl', function ($scope) {
})
app.directive('someVideo', function ($window, $timeout) {
return {
controller: function($scope) {
},
link: function (scope, elm) {
scope.videoPlayer = elm[0];
scope.keyDownEvent = keyDownEvent;
scope.currentTime = 0;
scope.videoPlayer.loop = true;
angular.element($window).bind('keydown',scope.keyDownEvent);
function keyDownEvent(e){
console.log(e.keyCode);
switch(e.keyCode) {
case 32: //space
scope.videoPlayer.loop = !scope.videoPlayer.loop;
console.log('spcae: ',scope.videoPlayer.loop);
break;
case 38: //up
scope.videoPlayer.currentTime = 0;
console.log('up: ', scope.videoPlayer.currentTime);
break;
case 40: //down
scope.videoPlayer.pause();
scope.videoPlayer.currentTime = scope.videoPlayer.duration;
console.log('down: ', scope.videoPlayer.currentTime);
break;
}
}
}
}
})
body {
overflow: hidden;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<div ng-app="myApp">
<div ng-controller="MainCtrl">
<video some-video src="http://nagi.ca/u/google.mp4" autoplay></video>
</div>
</div>
http://jsfiddle.net/4bygou77/4/
回购步骤:
1) 启动 fiddle 并点击视频设置焦点
2) 使用按键:space = 切换循环,向下= 最后一帧,向上= 第一帧
结果:
启用循环:视频暂停,跳到最后一帧,然后跳到第一帧
禁用循环:视频暂停,跳转到最后一帧(我想要的结果)
改变这个
scope.videoPlayer.currentTime = scope.videoPlayer.duration;
至此
scope.videoPlayer.currentTime = scope.videoPlayer.duration - 1;