3 PeerTube lets you embed videos and programmatically control their playback. This documentation covers how to interact with the PeerTube Embed API.
7 Any PeerTube embed URL (ie `https://my-instance.example.com/videos/embed/52a10666-3a18-4e73-93da-e8d3c12c305a`) can be viewed as an embedding playground which
8 allows you to test various aspects of PeerTube embeds. Simply replace `/embed` with `/test-embed` and visit the URL in a browser.
9 For instance, the playground URL for the above embed URL is `https://my-instance.example.com/videos/test-embed/52a10666-3a18-4e73-93da-e8d3c12c305a`.
13 Given an existing PeerTube embed `<iframe>` **with API enabled** (`https://my-instance.example.com/videos/embed/52a10666-3a18-4e73-93da-e8d3c12c305a?api=1`),
14 one can use the PeerTube Embed API to control it by first including the library. You can include it via Yarn with:
17 yarn add @peertube/embed-api
20 Now just use the `PeerTubePlayer` class exported by the module:
23 import { PeerTubePlayer } from '@peertube/embed-api'
28 Or use the minified build from NPM CDN in your HTML file:
31 <script src="https://unpkg.com/@peertube/embed-api/build/player.min.js"></script>
34 const PeerTubePlayer = window['PeerTubePlayer']
40 Then you can instantiate the player:
43 let player = new PeerTubePlayer(document.querySelector('iframe'))
44 await player.ready // wait for the player to be ready
46 // now you can use it!
54 You can customize PeerTube player by specifying URL query parameters.
55 For example `https://my-instance.example.com/videos/embed/52a10666-3a18-4e73-93da-e8d3c12c305a??start=1s&stop=18s&loop=1&autoplay=1&muted=1&warningTitle=0&controlBar=0&peertubeLink=0&p2p=0`
59 Start the video at a specific time.
60 Value must be raw seconds or a duration (`3m4s`)
64 Stop the video at a specific time.
65 Value must be raw seconds or a duration (`54s`)
69 Mimics video HTML element `controls` attribute, meaning that all controls (including big play button, control bar, etc.) will be removed.
70 It can be useful if you want to have a full control of the PeerTube player.
72 Value must be `0` or `1`.
76 Hide control bar when the video is played.
78 Value must be `0` or `1`.
82 Hide PeerTube link in control bar.
84 Value must be `0` or `1`.
88 Mute the video by default.
90 Value must be `0` or `1`.
94 Automatically start again the video when it ends.
96 Value must be `0` or `1`.
100 Auto select a subtitle by default.
102 Value must be a valid subtitle ISO code (`fr`, `en`, etc.).
107 ## `play() : Promise<void>`
109 Starts playback, or resumes playback if it is paused.
111 ## `pause() : Promise<void>`
115 ## `seek(positionInSeconds : number)`
117 Seek to the given position, as specified in seconds into the video.
119 ## `addEventListener(eventName : string, handler : Function)`
121 Add a listener for a specific event. See below for the available events.
123 ## `getResolutions() : Promise<PeerTubeResolution[]>`
125 Get the available resolutions. A `PeerTubeResolution` looks like:
136 `active` is true if the resolution is the currently selected resolution.
138 ## `setResolution(resolutionId : number): Promise<void>`
140 Change the current resolution. Pass `-1` for automatic resolution (when available).
141 Otherwise, `resolutionId` should be the ID of an object returned by `getResolutions()`
143 ## `getPlaybackRates() : Promise<number[]>`
145 Get the available playback rates, where `1` represents normal speed, `0.5` is half speed, `2` is double speed, etc.
147 ## `getPlaybackRates() : Promise<number>`
149 Get the current playback rate. See `getPlaybackRates()` for more information.
151 ## `setPlaybackRate(rate: number) : Promise<void>`
153 Set the current playback rate. The passed rate should be a value as returned by `getPlaybackRates()`.
155 ## `setVolume(factor: number) : Promise<void>`
157 Set the playback volume. Value should be between `0` and `1`.
159 ## `getVolume(): Promise<number>`
161 Get the playback volume. Returns a value between `0` and `1`.
163 ## `setCaption(id: string) : Promise<void>`
165 Update current caption using the caption id.
167 ## `getCaptions(): Promise<{ id: string, label: string, src: string, mode: 'disabled' | 'showing' }>`
171 ## `playNextVideo(): Promise<void>`
173 Play next video in playlist.
175 ## `playPreviousVideo(): Promise<void>`
177 Play previous video in playlist.
179 ## `getCurrentPosition(): Promise<void>`
181 Get current position in playlist (starts from 1).
185 You can subscribe to events by using `addEventListener()`. See above for details.
187 ## Event `playbackStatusUpdate`
189 Fired every half second to provide the current status of playback.
190 The parameter of the callback will resemble:
196 "duration": "171.37499",
197 "playbackState": "playing"
201 `duration` field and `ended` `playbackState` are available in PeerTube >= 2.2.
203 The `volume` field contains the volume from `0` (silent) to `1` (full volume).
204 The `playbackState` can be `unstarted`, `playing`, `paused` or `ended`. More states may be added later.
206 ## Event `playbackStatusChange`
208 Fired when playback transitions between states, such as `paused` and `playing`. More states may be added later.
210 ## Event `resolutionUpdate`
212 Fired when the available resolutions have changed, or when the currently selected resolution has changed. Listener should call `getResolutions()` to get the updated information.
214 ## Event `volumeChange`
216 Fired when the player volume changed.