Skip navigation
Updated: 12.08.2026
Open as Markdown

A component for embedding Kinescope Player in Vue 3 applications, supported since package version 2.0.0. It uses an iframe and the IFrame API under the hood. Repository: kinescope/vue-kinescope-player .

Installation

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

Quick start

Register the component globally:

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')

Register it locally in a component:

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

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

Events

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

Methods

Methods are available through 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

Use kebab-case in templates (video-id) and camelCase in scripts.

Core props

PropTypeDefaultDescription
video-idnumber | stringVideo ID (required)
widthnumber | string100%Width
heightnumber | string100%Height
external-idstringExternal ID for analytics

Behavior

PropTypeDefaultDescription
auto-playboolean | stringfalseAutoplay. 'viewable' starts playback when the player enters the viewport; 'hover' starts it on hover
mutedbooleanfalseStart muted
loopbooleanfalseLoop playback
plays-inlinebooleantruePlay inline on mobile without automatically entering fullscreen
volumenumberVolume from 0 to 1. Updates reactively without reloading the player
playback-ratenumberPlayback speed. 1 is normal speed. Updates reactively
text-trackboolean | stringSubtitles on load: true or a language code such as 'en'

Interface

PropTypeDefaultDescription
languagestringenUI language
controlsbooleantrueAll controls. false hides both the title and control bar
titlebooleantrueTitle displayed over the video
control-barboolean | stringtrueBottom control bar. Use 'always' to keep it visible
progress-barbooleantrueProgress bar
main-play-buttonbooleantrueLarge Play button in the center
play-buttonbooleantruePlay/Pause button on the control bar
volume-buttonbooleantrueVolume button
playback-rate-buttonbooleanfalsePlayback speed button
playback-ratesarray | booleanList of speeds, for example [0.5, 1, 1.5, 2]. Set to false to hide the button
subtitles-buttonbooleantrueSubtitles button
settings-buttonbooleantrueSettings button
pip-buttonbooleantruePicture-in-Picture button
fullscreen-buttonboolean | stringtrueFullscreen button. Use 'force' to always show it
video-fitstringcontaincontain | cover | fill
watermarkstring | objectWatermark as a string or object. Updates reactively

Watermark object:

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

Events

EventData
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

Methods

Call a method with kinescope.value.player.play().

MethodParametersResult
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>

Next steps