]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - support/doc/api/embeds.md
Merge branch 'release/4.2.0' into develop
[github/Chocobozzz/PeerTube.git] / support / doc / api / embeds.md
CommitLineData
99941732
WL
1# PeerTube Embed API
2
3PeerTube lets you embed videos and programmatically control their playback. This documentation covers how to interact with the PeerTube Embed API.
4
5## Playground
6
1151f521
C
7Any PeerTube embed URL (ie `https://my-instance.example.com/videos/embed/52a10666-3a18-4e73-93da-e8d3c12c305a`) can be viewed as an embedding playground which
8allows you to test various aspects of PeerTube embeds. Simply replace `/embed` with `/test-embed` and visit the URL in a browser.
99941732
WL
9For instance, the playground URL for the above embed URL is `https://my-instance.example.com/videos/test-embed/52a10666-3a18-4e73-93da-e8d3c12c305a`.
10
11## Quick Start
12
9a207a71
C
13Given an existing PeerTube embed `<iframe>` **with API enabled** (`https://my-instance.example.com/videos/embed/52a10666-3a18-4e73-93da-e8d3c12c305a?api=1`),
14one can use the PeerTube Embed API to control it by first including the library. You can include it via Yarn with:
99941732
WL
15
16```
17yarn add @peertube/embed-api
18```
19
20Now just use the `PeerTubePlayer` class exported by the module:
21
22```typescript
23import { PeerTubePlayer } from '@peertube/embed-api'
24
03d641a0
C
25...
26```
27
28Or use the minified build from NPM CDN in your HTML file:
29
30```
afd1a6ed 31<script src="https://unpkg.com/@peertube/embed-api/build/player.min.js"></script>
03d641a0
C
32
33<script>
34 const PeerTubePlayer = window['PeerTubePlayer']
35
36 ...
37</script>
38```
39
40Then you can instantiate the player:
41
42```typescript
99941732
WL
43let player = new PeerTubePlayer(document.querySelector('iframe'))
44await player.ready // wait for the player to be ready
45
46// now you can use it!
47player.play()
48player.seek(32)
b2b0ce8a 49player.pause()
99941732
WL
50```
51
60f013e1
C
52# URL parameters
53
54You can customize PeerTube player by specifying URL query parameters.
55For 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`
56
57## start
58
59Start the video at a specific time.
60Value must be raw seconds or a duration (`3m4s`)
61
62## stop
63
64Stop the video at a specific time.
65Value must be raw seconds or a duration (`54s`)
66
67## controls
68
69Mimics video HTML element `controls` attribute, meaning that all controls (including big play button, control bar, etc.) will be removed.
70It can be useful if you want to have a full control of the PeerTube player.
71
72Value must be `0` or `1`.
73
74## controlBar
75
76Hide control bar when the video is played.
77
78Value must be `0` or `1`.
79
80## peertubeLink
81
82Hide PeerTube link in control bar.
83
84Value must be `0` or `1`.
85
86## muted
87
88Mute the video by default.
89
90Value must be `0` or `1`.
91
92## loop
93
94Automatically start again the video when it ends.
95
96Value must be `0` or `1`.
97
98## subtitle
99
100Auto select a subtitle by default.
101
102Value must be a valid subtitle ISO code (`fr`, `en`, etc.).
103
104
99941732
WL
105# Methods
106
107## `play() : Promise<void>`
108
109Starts playback, or resumes playback if it is paused.
110
111## `pause() : Promise<void>`
112
113Pauses playback.
114
115## `seek(positionInSeconds : number)`
116
117Seek to the given position, as specified in seconds into the video.
118
119## `addEventListener(eventName : string, handler : Function)`
120
121Add a listener for a specific event. See below for the available events.
122
123## `getResolutions() : Promise<PeerTubeResolution[]>`
124
125Get the available resolutions. A `PeerTubeResolution` looks like:
126
127```json
128{
129 "id": 3,
130 "label": "720p",
03d641a0 131 "height": "720",
99941732
WL
132 "active": true
133}
134```
135
136`active` is true if the resolution is the currently selected resolution.
137
138## `setResolution(resolutionId : number): Promise<void>`
139
140Change the current resolution. Pass `-1` for automatic resolution (when available).
141Otherwise, `resolutionId` should be the ID of an object returned by `getResolutions()`
142
143## `getPlaybackRates() : Promise<number[]>`
144
145Get the available playback rates, where `1` represents normal speed, `0.5` is half speed, `2` is double speed, etc.
146
147## `getPlaybackRates() : Promise<number>`
148
149Get the current playback rate. See `getPlaybackRates()` for more information.
150
1151f521 151## `setPlaybackRate(rate: number) : Promise<void>`
99941732
WL
152
153Set the current playback rate. The passed rate should be a value as returned by `getPlaybackRates()`.
154
1151f521 155## `setVolume(factor: number) : Promise<void>`
99941732
WL
156
157Set the playback volume. Value should be between `0` and `1`.
158
159## `getVolume(): Promise<number>`
160
161Get the playback volume. Returns a value between `0` and `1`.
03d641a0 162
1151f521
C
163## `setCaption(id: string) : Promise<void>`
164
165Update current caption using the caption id.
166
167## `getCaptions(): Promise<{ id: string, label: string, src: string, mode: 'disabled' | 'showing' }>`
168
169Get video captions.
170
9054a8b6
C
171## `playNextVideo(): Promise<void>`
172
173Play next video in playlist.
174
175## `playPreviousVideo(): Promise<void>`
176
177Play previous video in playlist.
178
179## `getCurrentPosition(): Promise<void>`
180
181Get current position in playlist (starts from 1).
182
99941732
WL
183# Events
184
185You can subscribe to events by using `addEventListener()`. See above for details.
186
99941732
WL
187## Event `playbackStatusUpdate`
188
1151f521 189Fired every half second to provide the current status of playback.
6ccdf9d5 190The parameter of the callback will resemble:
99941732
WL
191
192```json
193{
194 "position": 22.3,
195 "volume": 0.9,
6ccdf9d5 196 "duration": "171.37499",
99941732
WL
197 "playbackState": "playing"
198}
199```
200
624a0221
C
201`duration` field and `ended` `playbackState` are available in PeerTube >= 2.2.
202
96aae68c
C
203The `volume` field contains the volume from `0` (silent) to `1` (full volume).
204The `playbackState` can be `unstarted`, `playing`, `paused` or `ended`. More states may be added later.
99941732
WL
205
206## Event `playbackStatusChange`
207
5ab994fe 208Fired when playback transitions between states, such as `paused` and `playing`. More states may be added later.
99941732
WL
209
210## Event `resolutionUpdate`
211
478924a0
C
212Fired when the available resolutions have changed, or when the currently selected resolution has changed. Listener should call `getResolutions()` to get the updated information.
213
214## Event `volumeChange`
215
216Fired when the player volume changed.