Пропустить навигацию
Обновлено: 12.08.2026
Открыть как Markdown

Компонент для встраивания Kinescope Player в приложения на Vue 3 (с версии пакета 2.0.0). Под капотом — iframe и IFrame API . Репозиторий: kinescope/vue-kinescope-player .

Установка

npm install @kinescope/vue-kinescope-player --save

Быстрый старт

Глобальная регистрация:

import { createApp } from 'vue'
import KinescopePlayer from '@kinescope/vue-kinescope-player'
import App from './App.vue'

const app = createApp(App)
app.use(KinescopePlayer)
app.mount('#app')

Локально в компоненте:

<script setup>
import { KinescopePlayer } from '@kinescope/vue-kinescope-player'
</script>

<template>
  <kinescope-player video-id="VIDEO_ID" />
</template>

События

<template>
  <kinescope-player
    video-id="VIDEO_ID"
    @ready="handleReady"
    @play="handlePlay"
  />
</template>

Методы

Методы доступны через refplayer:

<template>
  <div>
    <kinescope-player
      ref="kinescope"
      video-id="VIDEO_ID"
      @ready="ready = true"
    />
    <button :disabled="!ready" @click="kinescope.player.play()">Play</button>
  </div>
</template>

<script setup>
import { ref } from 'vue'
import { KinescopePlayer } from '@kinescope/vue-kinescope-player'

const ready = ref(false)
const kinescope = ref(null)
</script>

Props

В шаблоне — kebab-case (video-id), в скрипте — camelCase.

Основные

PropТипПо умолчаниюОписание
video-idnumber | stringID видео (обязательный)
widthnumber | string100%Ширина
heightnumber | string100%Высота
external-idstringВнешний ID для аналитики

Поведение

PropТипПо умолчаниюОписание
auto-playboolean | stringfalseАвтостарт. 'viewable' — при появлении в viewport, 'hover' — при наведении
mutedbooleanfalseСтарт без звука
loopbooleanfalseЗациклить
plays-inlinebooleantrueInline на мобильных без автоперехода в fullscreen
volumenumberГромкость 0–1 (реактивно, без перезагрузки плеера)
playback-ratenumberСкорость (1 — обычная; реактивно)
text-trackboolean | stringСубтитры при загрузке: true или код языка, например 'ru'

Интерфейс

PropТипПо умолчаниюОписание
languagestringenЯзык UI
controlsbooleantrueВсе контролы; false скрывает и заголовок, и панель
titlebooleantrueЗаголовок поверх видео
control-barboolean | stringtrueНижняя панель; 'always' — всегда видима
progress-barbooleantrueПолоса прогресса
main-play-buttonbooleantrueБольшая кнопка Play по центру
play-buttonbooleantruePlay/Pause на панели
volume-buttonbooleantrueКнопка громкости
playback-rate-buttonbooleanfalseКнопка скорости
playback-ratesarray | booleanСписок скоростей, например [0.5, 1, 1.5, 2]; false скрывает кнопку
subtitles-buttonbooleantrueКнопка субтитров
settings-buttonbooleantrueКнопка настроек
pip-buttonbooleantruePicture-in-Picture
fullscreen-buttonboolean | stringtrueFullscreen; 'force' — показывать всегда
video-fitstringcontaincontain | cover | fill
watermarkstring | objectВодяной знак (строка или объект; реактивно)

Объект водяного знака:

{
  text: string
  mode?: 'random' | 'stripes'
  scale?: number
  displayTimeout?: number | { visible: number; hidden: number }
}

События

СобытиеДанные
js-load
js-load-error
ready{ currentTime, duration, quality, qualityLevels }
quality-changed{ quality }
auto-quality-changed{ quality }
seek-chapter{ position }
size-changed{ width, height }
play
playing
waiting
pause
ended
time-update{ currentTime }
progress{ bufferedTime }
duration-change{ duration }
volume-change{ muted, volume }
playback-rate-change{ playbackRate }
seeking
seeked
fullscreen-change{ isFullscreen, video }
call-action{ id, title?, type }
call-bookmark{ id, time, title? }
error{ error }
destroy

Методы

Вызов: kinescope.value.player.play().

МетодПараметрыРезультат
isPausedPromise<boolean>
isEndedPromise<boolean>
playPromise<void>
pausePromise<boolean>
stopPromise<void>
getCurrentTimePromise<number>
getDurationPromise<number>
seekTo(time: number)Promise<void>
isMutedPromise<boolean>
mutePromise<void>
unmutePromise<void>
getVolumePromise<number>
setVolume(value: number)Promise<void>
getPlaybackRatePromise<number>
setPlaybackRate(value: number)Promise<void>
getVideoQualityListPromise<VideoQuality[]>
getCurrentVideoQualityPromise<VideoQuality>
setVideoQuality(quality: VideoQuality)Promise<void>
enableTextTrack(lang: string)Promise<void>
disableTextTrackPromise<void>
closeCTAPromise<void>
isFullscreenPromise<boolean>
setFullscreen(fullscreen: boolean)Promise<void>
isPipPromise<boolean>
setPip(pip: boolean)Promise<void>
getPlaylistItemPromise<object>
switchTo(id: string)Promise<void>
nextPromise<void>
previousPromise<void>

Что дальше?