iPad上的HTML5视频搜索

iPad上的HTML5视频搜索,ipad,html5-video,seekbar,Ipad,Html5 Video,Seekbar,我有一个带有自定义搜索栏的HTML5视频播放器,它在iPhone(内联播放)和浏览器上运行得非常好 它在iPad上也能播放,搜索栏会随着电影的播放而更新,但由于某些原因,我无法搜索 所有值都是正确的,我正在尝试设置: myPlayer.currentTime = XX; 不幸的是,iPad拒绝设置.currentTime属性 从我所能收集到的来看,浏览器和iPad之间的区别在于在浏览器上我得到: myPlayer.networkState = 3 myPlayer.readyState = 4

我有一个带有自定义搜索栏的HTML5视频播放器,它在iPhone(内联播放)和浏览器上运行得非常好

它在iPad上也能播放,搜索栏会随着电影的播放而更新,但由于某些原因,我无法搜索

所有值都是正确的,我正在尝试设置:

myPlayer.currentTime = XX;
不幸的是,iPad拒绝设置.currentTime属性

从我所能收集到的来看,浏览器和iPad之间的区别在于在浏览器上我得到:

myPlayer.networkState = 3
myPlayer.readyState = 4
myPlayer.networkState = 2
myPlayer.readyState = 3
我在iPad上看到:

myPlayer.networkState = 3
myPlayer.readyState = 4
myPlayer.networkState = 2
myPlayer.readyState = 3
这是完全相同的代码,运行本地MP4视频

知道为什么会这样吗

干杯,
Andre

我在使用JavaScript控制音频元素方面遇到了各种各样的问题,对currentTime属性以及苹果公司对用户直接发起事件的限制感到非常失望

如果iPad上的JavaScript和HTML5视频播放(或未记录的“功能”)存在某种奇怪的bug,我也不会感到惊讶,这需要一种解决方法。从我的经验来看,iPad有一种比官方文件中的方式更独特的做事方式

您应该检查视频元素的错误缓冲可搜索搜索属性。看看你的readyState和networkState值,iPad似乎认为视频还没有完全加载——这对于本地资源来说很奇怪

缓冲可搜索应等于整个视频的时间范围。追求应该是真实的。这至少会给你更多关于这个问题的信息

你用其他视频测试过吗?这可能是因为iPad的视频存在某种编码问题


除此之外,以前的iPad操作系统版本中有一个bug,它破坏了设置currentTime属性的功能。您使用的是最新的操作系统版本吗?

我也遇到了同样的问题-以下是我案例中的属性:

UIWebView - iPad Simulator
duration=4.861666679382324
startTime=0
currentTime=4.861666679382324
buffered(1)=[0-0]
seekable(0)=
seeking=false
error=null
readystate=4
networkstate=3

Chrome:
duration=4.9226298332214355
startTime=0
currentTime=4.9226298332214355
buffered(1)=[0-4.9226298332214355]
seekable(1)=[0-4.9226298332214355]
seeking=false
error=null
readystate=4
networkstate=1
所以-没有任何东西得到缓冲,也没有任何东西是可查找的。我正在通过UIWebView播放iPad捆绑包资源目录中的本地剪辑


在我的例子中,我只需要在每次播放后重置到视频的顶部,我可以通过调用“load()”

实现这一点。这个问题与
video.currentTime
属性上使用的值有关。在我的具体案例中,我通过始终确保在查找过程中使用带有1个十进制数字的浮点数来修复问题

在iOS 3.2上将
video.currentTime
设置为零确实会将视频搜索到开头,但此后该值不会更新-
timeupdate
事件仍然正常调度,但如果尝试读取
currentTime
,它将始终返回相同的值

要搜索到视频的开头,请使用
0.1
而不是
0
,要搜索到
12.2345
请使用
12.2


PS:您可以使用
(+(12.2345).toFixed(1))
将小数位数限制为1。

Kyle的答案很好。我想补充一点,您不能假设在任何特定事件之后填充了
可查找的属性。这意味着您不能等待诸如
loadedmetadata
canplay
或任何其他事件,并假设您能够在该点安全地设置
currentTime

似乎最安全的方法是在每次视频相关事件后检查
seekable
,如果它包含您想要查找的时间,则在该点设置
currentTime
。在iPad上,
seekable
可能要等到
canplaythrough
事件之后才能填充,这已经很晚了


有关这方面的更多信息,请参阅。

我正在使用3.2(因为我无法将其限制为最新版本),并且我尝试了不同的视频源,但遇到了相同的问题:/能否发布设置当前时间的代码。我可以毫不费力地完成这项工作。这里:videoplayerement.currentTime=x*videoplayerement.duration/scruberbg.width()。。。这在浏览器(其中几个)和iPad上都有效,该值显示为ok,但未设置属性。我正在运行3.2,我发现iOS上的设置
video.currentTime
,似乎是在用户操作之后进行的。在设置
currentTime
之前发出
alert()
或触摸事件似乎提供了正确的响应-当然,除了它需要的用户交互。我也有同样的问题,并尝试按照上述方法取整,但在IOS 6.1上似乎不起作用。