iPad上的HTML5视频搜索
我有一个带有自定义搜索栏的HTML5视频播放器,它在iPhone(内联播放)和浏览器上运行得非常好 它在iPad上也能播放,搜索栏会随着电影的播放而更新,但由于某些原因,我无法搜索 所有值都是正确的,我正在尝试设置: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
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上似乎不起作用。