@api.video/player-sdk

中文文档
1.2.33发布于 2024/08/22MITTypeScriptESM + CJS近 30 天下载 2.3万

api.video 播放器 SDK

中文使用文档
文档目录9 节
  1. 目录
  2. 项目说明
  3. 开始
  4. 安装
  5. 文档
  6. 证据
  7. 方法
  8. 完整实例
  9. 使用 SDK 控制已有嵌入式播放器

badge   badge   badge

api.video 播放器 SDK

视频 是产品制造者的视频基础设施。 闪电快视频 API 用于在您的应用程序中集成,缩放,并管理点播后低空直播功能.

目录

项目说明

SDK 用于控制并与 api.video HTML5 播放器交互

开始

安装

方法 1: 要求js

如果您使用需要js, 您可以添加 SDK 作为您的项目依赖性

$ npm install --save @api.video/player-sdk

然后可以在脚本中使用 SDK :

var { PlayerSdk } = require("@api.video/player-sdk");

var sdk = new PlayerSdk("#target", {
  id: "<VIDEO_ID>",
  // ... other optional options
});

方法 第 2 号 :

如果您使用 Typescript , 您可以将 SDK 添加为您的工程的依赖性

$ npm install --save @api.video/player-sdk

然后可以在脚本中使用 SDK :

import { PlayerSdk } from "@api.video/player-sdk";

const sdk = new PlayerSdk("#target", {
  id: "<VIDEO_ID>",
  // ... other optional options
});

方法 2 : 简洁地包含在 Javascript 工程中

将 SDK 包含在您的 HTML 文件中 :

<head>
  ...
  <script src="https://unpkg.com/@api.video/player-sdk" defer></script>
</head>

然后,一旦 window.onload 事件已触发,使用 new PlayerSdk()数字 :

<script type="text/javascript">
  window.player = new PlayerSdk("#target", {
    id: "<VIDEO_ID>",
    // ... other optional options
  });
</script>

文档

证据

PlayerSdk 构造器需要两个参数:

  • targetSelector: string | Element a CSS 选择器,针对您想要创建播放器的 DOM 元素(如“#目标”),或 DOM 元素本身
  • options: SdkOptions 一个包含玩家选项的对象。 现有备选方案如下:
选项名称强制性类型说明
编号对字符串视频的代号(视频或直播) (d) 国家
符号是,用于录像字符串页:1 私人视频 url 令牌
非公开会议没有字符串页:1 私人视频 必要时为会议编号
现场直播无( 默认: 假)布尔表示视频是活的
自动播放无( 默认: 假)布尔装入后立即开始播放视频
哑巴无( 默认: 假)布尔视频被监听
元数据无( 默认: 为空)对象包含对象 元数据 (见 完整实例 (见下文)
隐藏控制无( 默认: 假)布尔控件被隐藏( 如果视频开始变音, 则解密按钮除外)
无铬无( 默认: 假)布尔无铬模式: 所有控件都被隐藏
隐藏标题无( 默认: 假)布尔隐藏视频标题
隐藏鼠标无( 默认: 假)布尔未显示海报图像
显示字幕无( 默认: 假)布尔视频字幕默认显示
循环无( 默认: 假)布尔视频完成后, 自动重新开始
播放范围无( 默认 :1)编号视频的回放速率:1为正版,2为x2等.
顺序没有{start: number, end: number}定义要播放的视频的顺序。 录像从头开始 start 时间码并结束于 end 时间码。 时间码是数秒.
广告没有{adTagUrl: string}见下文 广告
自定义域没有字符串如果您为您的账户启用了自定义域, 那么完整的“ embed” 域名( 如 嵌入.mydomain.com)
热键无( 默认: 真)布尔如果错误, 则解除玩家的热键, 使其无法捕捉焦点, 这在某些情况下可能是有益的

Sdk实例可用于控制视频回放,并收听玩家事件.

广告

广告可以在玩家中显示. 要做到这一点,你需要通过 ads 选项。 在那个 ads 对象,通过 adTagUrl 带有广告标签url的属性。 广告标签必须是VAST 2.0或 3.0 url. 有关VAST的更多信息,请查看 IAB 文件。 。 。 .

注:广告使用 谷歌IMA SDK。 。 。 .

方法

Sdk 实例有以下方法:

loadConfig(options: SdkOptions)

在玩家的同一实例中装入新视频 。 可用的选项与传递给SDK构建器的选项相同(见可用).

示例

player.loadConfig({
  id: "<VIDEO_ID>",
  hideTitle: true,
  hideControls: true,
});

play()

开始播放视频.

pause()

暂停视频播放.

mute()

关闭视频.

unmute()

释出相相相.

hideControls(controls?: ControlName[])

隐藏玩家控制 .

controls 参数类型定义 :

type ControlName =
  | "play"
  | "seekBackward"
  | "seekForward"
  | "playbackRate"
  | "volume"
  | "fullscreen"
  | "subtitles"
  | "chapters"
  | "pictureInPicture"
  | "progressBar"
  | "chromecast"
  | "download"
  | "more";

如果没有为"控件"参数提供值,所有控件都会被隐藏.

说明:唯一仍能被看到的控制是,如果开始的视频变哑,则解密按钮. 要隐藏所有控件, 包括此控件, 请使用设置 Chromeless () 方法

示例

player.hideControls();

如果提供控制名称清单,相关控制将被隐藏.

示例

player.showControls(); // display all controls ...
player.hideControls(["download", "subtitles"]); // ... except "download" and "subtitles"

showControls(controls?: ControlName[])

显示玩家控件 .

controls 参数类型定义 :

type ControlName =
  | "play"
  | "seekBackward"
  | "seekForward"
  | "playbackRate"
  | "volume"
  | "fullscreen"
  | "subtitles"
  | "chapters"
  | "pictureInPicture"
  | "progressBar"
  | "chromecast"
  | "download"
  | "more";

如果没有为"控件"参数提供值,则会显示所有控件.

示例

player.showControls();

如果提供了控制名列表,则将显示相关的控制名.

示例

player.hideControls(); // hide all controls ...
player.showControls(["download", "subtitles"]); // ... except "download" and "subtitles" ...
// ...
player.showControls(["progressBar"]); // ... and the progress bar

setChromeless(chromeless: boolean)

定义玩家是否应该处于无铬模式(所有控件都隐藏).

hideSubtitles()

隐藏玩家字幕.

showSubtitles()

显示玩家字幕.

hideTitles()

将视频标题藏于视频上方.

showTitles()

在视频上方显示视频标题.

setLoop(loop: boolean)

定义视频是否应该循环播放 .

setAutoplay(autoplay: boolean)

定义视频是否在装入后立即开始播放

seek(time: number)

添加/ 减除给定秒数到/ 从播放时间.

setPlaybackRate(rate: number)

设定当前播放率 .

示例

player.setPlaybackRate(2); // Play at 2x rate

setCurrentTime(time: number)

设定当前播放时间( 秒) .

示例

player.setCurrentTime(24); // Go the 24th second

setVolume(volume: number)

将音频音量改为给定值 。 从0到1(0=哑音,1=100%).

示例

player.setVolume(0.75); // Set the volume to 75%

setVideoStyleObjectFit(value: "contain" | "cover" | "fill" | "none" | "scale-down")

改变 对象适应 视频标签的 CSS 值 .

示例

player.setVideoStyleObjectFit("cover"); // Set the object-fit to cover

setVideoStyleTransform(value: string)

改变 转换 视频标签的 CSS 值 .

示例

player.setVideoStyleTransform("rotateY(180deg)"); // Apply a 180deg rotation around the Y axis (mirroring)

setTheme(theme: PlayerTheme)

改变玩家的外观.

theme 参数类型定义 :

type PlayerTheme = {
  text?: string;
  link?: string;
  linkHover?: string;
  trackPlayed?: string;
  trackUnplayed?: string;
  trackBackground?: string;
  backgroundTop?: string;
  backgroundBottom?: string;
  backgroundText?: string;
  linkActive?: string;
};

示例

player.setTheme({
  link: "red",
  linkHover: "rgba(0, 255, 0, 1)",
  backgroundBottom: "#0000ff",
});

requestFullscreen()

请求全屏模式( 根据浏览器限制, 在某些情况下可能无法工作)

exitFullscreen()

离开全屏模式

requestPictureInPicture()

在图片模式下请求图片( 这在某些情况下可能无法工作, 取决于浏览器限制)

exitPictureInPicture()

在图片模式中保存图片

getPaused(callback?: (paused: boolean) => void): Promise<boolean>

请检查date=中的日期值 (帮助).

getPlaying(callback?: (playing: boolean) => void): Promise<boolean>

看看录像在播放什么.

getMuted(callback?: (muted: boolean) => void): Promise<boolean>

检查录像是不是哑了.

getDuration(callback?: (duration: number) => void): Promise<number>

取取相相续相.

getCurrentTime(callback?: (currentTime: number) => void): Promise<number>

获取视频当前播放时间.

getVolume(callback?: (volume: number) => void): Promise<number>

取出目前卷来.

getLoop(callback?: (loop: boolean) => void): Promise<boolean>

检查视频是否为循环模式 .

getPlaybackRate(callback?: (rate: number) => void): Promise<number>

取出回放速率.

isLiveStream(callback?: (live: boolean) => void): Promise<boolean>

检查视频是否为活流 .

download(filename?: string): void

下载视频。 如果不提供文件名,则使用默认名称"video.mp4" . 如果视频无法下载, 则会丢弃例外 .

destroy()

摧毁玩家实例 .

addEventListener(event: string, callback: () => void)

定义在指定事件被玩家触发时会调用的回调函数 .

现有活动如下:

事件名称说明参数
已关闭开始在播放设备上播放- 说吧
空投游戏断开连接停止在播放设备上播放- 说吧
已连接开始在chromecast设备上播放- 说吧
已断开停止在发光器上播放- 说吧
无法控制控件现已禁用- 说吧
启用控制现在启用了控制- 说吧
结束回放到视频的结尾- 说吧
错误发生错误- 说吧
第一场视频第一次开始播放- 说吧
全屏更改玩家进入( 或返回) 全屏{ isFullScreen: boolean }
鼠标输入用户鼠标进入玩家区域- 说吧
鼠标离开用户的鼠标离开玩家区域- 说吧
暂停视频已被暂停- 说吧
播放视频开始播放(首次或被暂停后)- 说吧
玩家大小调整玩家大小已经改变- 说吧
质量变化视频质量有变化{ resolution: { height: number, width: number } }
汇率变动回放率已经改变- 说吧
准备玩家准备好了- 说吧
调整大小视频尺寸已经改变
请求玩家正在寻找- 说吧
时间更新日期播放时间已经改变{ currentTime: number }
用户活动用户活动- 说吧
用户不活动用户不活动- 说吧
音量变化音量变了{ volume: number }

实例:

// listen to the 'play' event
player.addEventListener("play", function () {
  console.log("play event received");
});

player.addEventListener("qualitychange", function (ev) {
  console.log(
    `quality has changed: ${ev.resolution.width}x${ev.resolution.height}`
  );
});

完整实例

<html>
  <head>
    ...
    <script src="/index.js" defer></script>
  </head>

  <body>
    <div id="target"></div>

    <!-- buttons that call player methods to control the video playback -->
    <button onclick="javascript:player.play()" id="play-btn">play</button>
    <button onclick="javascript:player.pause()" id="pause-btn" disabled>
      pause
    </button>
    <button onclick="javascript:player.mute()">mute</button>
    <button onclick="javascript:player.unmute()">unmute</button>
  </body>

  <script type="text/javascript">
    window.onload = function () {
      // create the player in the #target element
      window.player = new PlayerSdk("#target", {
        id: "123456",
        metadata: {
          dogcat: "dog",
        },
      });

      // when the 'play' event is received, disable the 'play' button and enable the 'pause' button
      player.addEventListener("play", function () {
        document.getElementById("play-btn").disabled = true;
        document.getElementById("pause-btn").disabled = false;
      });

      // when the 'pause' event is received, disable the 'pause' button and enable the 'play' button
      player.addEventListener("pause", function () {
        document.getElementById("play-btn").disabled = false;
        document.getElementById("pause-btn").disabled = true;
      });
    };
  </script>
</html>

使用 SDK 控制已有嵌入式播放器

也可以将SDK整合到一个已经包含嵌入式玩家的页面中,以便控制并收听它的事件. 让我们考虑以下一页:

<html>
  <head>
    ...
  </head>

  <body>
    ...
    <!-- my embedded player -->
    <iframe
      src="//embed.api.video/vod/vi54sj9dAakOHJXKrUycCQZp"
      width="100%"
      height="100%"
      frameborder="0"
      allowfullscreen
    ></iframe>
    ...
  </body>
</html>

要将 SDK 附加到这个播放器上, 您必须在您的页面中修改以下内容 :

  • 导入 sdk.js 脚本在你的页面,
  • 创建一个 PlayerSdk 实例.

以下为这些变化的页面的外观:

<html>
  <head>
    ...
    <script src="/index.js" defer></script>
  </head>

  <body>
    ...
    <!-- my embedded player -->
    <iframe
      id="myPlayer"
      src="//embed.api.video/vod/vi54sj9dAakOHJXKrUycCQZp"
      width="100%"
      height="100%"
      frameborder="0"
      allowfullscreen
    ></iframe>
    ...
  </body>

  <script type="text/javascript">
    window.onload = function () {
      // attach the sdk to the existing player
      window.player = new PlayerSdk("#myPlayer");

      // window.player can now be used to control the player as described above
    };
  </script>
</html>

版本与发布记录

@api.video/player-sdk 共发布 36 个版本,首次发布于 2020/09/10;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.2.33latest2024/08/222 年前
1.2.322024/07/162 年前
1.2.312024/06/192 年前
1.2.302024/06/192 年前
1.2.292024/06/192 年前
1.2.282023/12/132 年前

关于 @api.video/player-sdk 的常见问题

@api.video/player-sdk 是什么?

api.video 播放器 SDK

如何安装 @api.video/player-sdk?

在项目目录运行 npm install @api.video/player-sdk,或使用 pnpm add / yarn add / bun add。

@api.video/player-sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@api.video/player-sdk 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@api.video/player-sdk 可以商用吗?

@api.video/player-sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@api.video/player-sdk 的下载量有多少?

根据 npm 官方下载统计,@api.video/player-sdk 在 2026/10/06 – 2026/11/04 这 30 天内被下载 22,805 次,日均约 760 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@api.video/player-sdk 还在维护吗?

最新版本 1.2.33 发布于 2024/08/22(2 年前);至今共发布 36 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/09/10。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。