我正在构建一个带有自定义界面的 HTML5 视频播放器,但在显示视频时长信息时遇到了一些问题。
我的 HTML 很简单:
<video id="video" poster="image.jpg" controls>
<source src="video_path.mp4" type="video/mp4" />
<source src="video_path.ogv" type="video/ogg" />
</video>
<ul class="controls">
<li class="time"><p><span id="timer">0</span> of <span id="duration">0</span></p></li>
</ul>
我用来获取和插入持续时间的 javascript 是
var duration = $('#duration').get(0);
var vid_duration = Math.round(video.duration);
duration.firstChild.nodeValue = vid_duration;
问题是什么都没有发生。我知道视频文件有持续时间数据,因为如果我只使用默认控件,它显示正常。
但真正奇怪的是,如果我像这样在代码中放入 alert(duration)
alert(duration);
var vid_duration = Math.round(video.duration);
duration.firstChild.nodeValue = vid_duration;
然后它工作正常(减去弹出的烦人警报)。任何想法这里发生了什么或我如何解决它?
更新:好的,虽然我还没有完全解决这个问题,但我确实想出了一个解决我最关心的问题......用户体验的解决方法。
首先,视频直到观众点击播放按钮后才开始加载,所以我假设无法提取持续时间信息(我不知道如何解决这个特定问题......尽管我假设它只涉及将视频元数据与视频分开加载,但我什至不知道这是否可能)。
所以为了避开没有持续时间数据的事实,我决定完全隐藏持续时间信息(实际上是整个控件),直到你点击播放。
也就是说,如果有人知道如何从视频文件中单独加载视频元数据,请分享。我认为应该彻底解决这个问题。