Mediaelement.js:如何更改海报图片?

tre*_*mby 9 javascript mediaelement.js

我正在尝试通过JS更改视频源.这主要是有效的.

var basename = "video/whatever";
$("#myvideo")[0].setSrc([
    {type: "video/mp4", src: basename + ".mp4"},
    {type: "video/webm", src: basename + ".webm"},
    {type: "video/ogg", src: basename + ".ogv"}
]);
Run Code Online (Sandbox Code Playgroud)

所以第一个问题:当我更改源时,暂停按钮显示而不是播放,并且即使暂停,也不会显示大的叠加播放按钮.我已经尝试在setSrc调用之前和之后发送stop()和pause()以及setCurrentTime(0)的各种组合,但没有运气.

更重要的问题:我还没有找到改变视频海报形象的方法.我期待在API中看到一个方法来更改它,因为我希望它也可以更新Flash/Silverlight后备.我尝试只更改视频元素上的poster属性,但似乎没有这样做.

小智 1

我知道这是一个相当老的问题,但我想我会发布对我有用的答案。

var basename = "video/whatever";
// Where videoPlayer is the video element.
if(!videoPlayer.paused) {
    videoPlayer.pause();
}
setTimeout(function(){
    // Set poster image
    $('.mejs-poster').empty().append('<img src="'+ basename + '.jpg"/>').show();

    // Set video source
    videoPlayer.setSrc([
        {type: "video/mp4", src: basename + ".mp4"},
        {type: "video/webm", src: basename + ".webm"},
        {type: "video/ogg", src: basename + ".ogv"}
    ]);
}, 0);
Run Code Online (Sandbox Code Playgroud)

这是 setTimeout 正在做什么的一个很好的解释:/sf/answers/54584981/

您可能还需要一些海报图像的 CSS,具体取决于您使用的主题。

.mejs-poster img {
    padding: 0;
    border: 0;
    width: 100%;
    height: auto;
}
Run Code Online (Sandbox Code Playgroud)