【发布时间】:2018-07-04 16:36:15
【问题描述】:
我有一个小型网络应用程序,它看起来像 facetime。我想通过单击“下一步”按钮来切换视频元素,该按钮将更新 vuex 中的值,视频将相应地换出。我试过这样:
<video autoplay playsinline loop muted class="background-video__source">
<source v-if="currentIndex === 0" src="~assets/img/placeholder/placeholder-1.mp4" type="video/mp4">
<source v-if="currentIndex === 1" src="~assets/img/placeholder/placeholder-2.mp4" type="video/mp4">
<source v-if="currentIndex === 2" src="~assets/img/placeholder/placeholder-3.mp4" type="video/mp4">
<source v-if="currentIndex === 3" src="~assets/img/placeholder/placeholder-4.mp4" type="video/mp4">
</video>
上述方法适用于 safari 的 ios 模拟器,但不适用于桌面 chrome。
这个方法我也试过了:
<video v-if="currentIndex === 0" autoplay playsinline loop muted class="background-video__source">
<source src="~assets/img/placeholder/placeholder-1.mp4" type="video/mp4">
</video>
<video v-if="currentIndex === 1" autoplay playsinline loop muted class="background-video__source">
<source src="~assets/img/placeholder/placeholder-2.mp4" type="video/mp4">
</video>
<video v-if="currentIndex === 2" autoplay playsinline loop muted class="background-video__source">
<source src="~assets/img/placeholder/placeholder-3.mp4" type="video/mp4">
</video>
<video v-if="currentIndex === 3" autoplay playsinline loop muted class="background-video__source">
<source src="~assets/img/placeholder/placeholder-4.mp4" type="video/mp4">
</video>
但是这种方法不管用。
在最坏的情况下,我可以使用 GIF 代替视频,但视频的效果会更好。
之前的 SO 问题:
之前发布的有关此问题的问题是指您更新源,例如<video autoplay playsinline loop muted :src="someVarSource" class="background-video__source">。但是,我对这种方法没有运气。
【问题讨论】:
-
This solution 表示要修改
src属性,修改后调用player.load()和player.play()。 -
您是否尝试过绑定 src 属性?喜欢
<source :src="'~assets/img/placeholder/placeholder-' + (currentIndex + 1) + '.mp4'" type="video/mp4"> -
@JulienMetral 很遗憾这种方法对我也不起作用
-
@RoyJ 这不是从 vuex 加载资产的示例,我上面的代码(第一个 sn-p)在没有显式调用 iOS 中的任何 pause() 或 play() 方法的情况下工作,但后来没有不能在 chrome 中工作
-
从哪里加载资产并不重要。问题在于
<video>元素,以及如何使用它。
标签: javascript vue.js html5-video nuxt.js