11

带有画中画 (PiP) 的 Safari HTML5 自定义视频控制器

WWDC15 Apple 推出 Safari 9 (MacOS 的 Safari 10),现在支持画中画。

在此处输入图像描述

然而,他们只是说:

如果您使用自定义 HTML5 视频控件,则可以使用 JavaScript 演示模式 API 添加画中画功能。

但不告诉如何或在哪里找到它的文档。

默认的视频控制器有按钮,但我如何通过 javascript 触发它?

4

1 回答 1

14

首先,如果您正在寻找在 Chrome 中制作画中画,请查看此链接


将画中画元素添加到您的标记中

自定义控件现在包括一个新的画中画按钮的标记,默认情况下是可见的。

清单 1这个标记添加了一个画中画按钮

<video id="video" src="my-video.mp4"></video>
<div id="controls">
    <button id="pipButton">PiP</button>
</div>

为按钮添加功能

添加一个函数以使用演示模式 API 中的 webkitSetPresentationMode 属性切换画中画。

清单 2此代码使用单击事件侦听器切换画中画。

var video = document.getElementById('video');
var PiP = document.getElementById('pipButton');

// picture-in-picture
if (video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function") {
    // Toggle PiP when the user clicks the button.
    PiP.addEventListener("click", function(event) {
        video.webkitSetPresentationMode(video.webkitPresentationMode === "picture-in-picture" ? "inline" : "picture-in-picture");
    });
 } else {
    PiP.disabled = true;
 }

资源


在行动。

var video = document.getElementById('video');
var PiP = document.getElementById('picture-in-picture');

// picture-in-picture
if (video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function") {
    // Toggle PiP when the user clicks the button.
    PiP.addEventListener("click", function(event) {
            video.webkitSetPresentationMode(video.webkitPresentationMode === "picture-in-picture" ? "inline" : "picture-in-picture");
    });
} else {
    PiP.disabled = true;
}
Only works in Safari 10+<br>

<video controls id="video" x-webkit-airplay="allow" width="320">
  <source src="http://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">     
</video>
    
<div class="controls">
  <button id="picture-in-picture">Picture in Picture</button>
</div>

于 2016-10-05T17:40:19.573 回答