Transmit the video status data
To make video search work better and show more relevant recommendations, make sure to transmit information about video status events (such as playback start, pause, and rewind times) and any possible errors.
Events that relate to video status
To transmit the video status data, use the postMessage function. When an event occurs in the player (for example, when a video starts playing), call the window.parent.postMessage
function in JavaScript. Pass the name of the event along with its parameters (for example, the progress bar position) as arguments.
Function usage example
window.parent.postMessage({
event: <Event name>,
// additional event parameters
}, '*');
Note
The postMessage
function is called for the parent object, window.parent
, because the video is placed in a separate frame (in the iframe
element) rather than on the main Yandex search results page.
To display the video player in the video search app for TV and in your browser, you need to transmit the mandatory events and their parameters.
Transmitting additional events enhances the user experience when interacting with the player and helps us rank videos more effectively.
Event |
Description |
Event parameter |
|
Player initialization. |
— |
|
Stop playing. |
|
|
Clip viewed through to the end. |
|
|
Start or continue playing after a pause. |
|
|
Video plays (this event is repeated multiple times). |
|
|
Error playing video, the video is unavailable. |
|
|
Start of ad display. |
Examples of data for the adShown eventExample 1When an ad unit begins playback at the 30th second of the video and consists of two ads, where the first ad is 15 seconds and can be skipped, and the second ad is 25 seconds and can't be skipped, the
Example 2For an ad unit with a single ad that plays at the very beginning of the video (
Note The ad parameters can be sent as a separate |
|
End of ad display. |
|
|
First video frame display. Note If the video is preceded by an ad, send this event during the first frame of the actual video, after the ad ends. |
|
Event |
Description |
Event parameter |
|
Jump back in video |
|
|
Continue playing video. |
Note The |
|
Turn sound on, off, or change the volume. |
Similar to the native volumechange event used with the |
|
Buffering of the video or a video segment has started. |
|
|
A video segment has loaded. |
|
|
Skips the ad. Doesn't substitute |
— |
|
Indicates whether the ad can be skipped using the |
|
|
List of available quality values. |
|
|
Change the video quality |
|
|
Change the playback rate. |
|
|
Switch the player to fullscreen or exit fullscreen. |
|
|
The player is now loaded and ready for use (data and player API have loaded) |
— |
|
Change the video playback rate. |
|
|
Whether the player controls are hidden programmatically (using the |
|
|
Whether the player controls are visible (as a result of a |
|
|
Clickout to ads (service) from the player. |
|
|
Send this event whenever a video is replaced inside the |
|
|
An error occurred while trying to switch to fullscreen or exit fullscreen. |
|
|
List of available quality values. |
|
Example of transferring data when a video starts
When a user clicks on the Play button on the player, the window.parent.postMessage
function is called along with the necessary parameters.
// Send a message when the video starts playing
window.parent.postMessage({
event: 'started',
duration: 30,
time: 5 // If the video continues playing starting at 5 seconds
}, ' *');
Error notifications
To enable video error notifications, the player needs to pass the following error codes to the window.parent.postMessage
function:
Error code |
Description |
Video unavailable |
|
101 |
Video deleted. |
102 |
The videoclip or account has been blocked. |
103 |
The videoclip doesn't exist or the URL is not supported. |
100 |
Other situations when a video is inaccessible. |
Restricted access to videoclip |
|
151 |
Insufficient video viewing rights. |
152 |
Not permitted to play video on other sites. |
153 |
Not permitted to play video in current region. |
154 |
Restricted access that requires the user to confirm something, for example, their age or a login attempt. |
155 |
The video isn't available because the service flagged the request as coming from a bot. |
156 |
The video requires a subscription to view. |
150 |
Other video viewing restrictions. |
Other |
|
5 |
Player malfunction (error with HTML player, etc.). |
0 |
Misc. errors. |
Example of sending an error message
If the video the player attempts to open has been deleted, you can send an error message as follows:
// Send an error message
window.parent.postMessage({
event: 'error',
time: 0,
code: '101'
}, '*');
Support parameters in player URL
For a smoother video experience on Smart TVs and in browsers, add support for these parameters to the player URL:
Parameter |
Description |
Possible values |
|
Autoplay |
Example
|
|
Controls how interactive player elements display on devices with Smart TV. |
Example
This parameter controls how all elements that can only be clicked on using a mouse display. These include:
If these elements are hidden automatically, it creates a better viewing experience on TVs. |
|
Load muted videos. |
|
|
Display control elements (progress bar, quality change, and others) in the video player. |
|
|
The timestamp where the video should start playing. |
ExampleThe example shows the video starting at 10:00 (600 seconds = 10 minutes).
|
Managing the player
Player control commands are sent to the iframe
from the outside window using the postMessage function. To receive messages inside the iframe
, subscribe to the message
event. Each command is a JSON object with a mandatory method
field.
Team |
Description |
|
Start or continue playing video. Example
|
|
Pause. Example
|
|
Jump to an absolute time value. Example
|
|
Set volume. Example
|
|
Force the display of the player controls. Example
|
|
Method for skipping the ad. Example
|
|
Set the video playback speed. Example
|
|
Disable sound. Example
|
|
Enable sound. Example
|
|
Set the video quality. Example
The |
|
Method for changing the video inside the player without re-rendering the whole
Example
|
|
Method for triggering video buffering before playback. Example
|
|
Method for switching to fullscreen. Example
|
|
Method for exiting fullscreen. Example
|
|
Hide the player controls. Example
|
Example of launching a video using a command
window.addEventListener('message', function (event) {
if (event.data.method === 'play') {
document.getElementById('video').play();
}
});
Answer format
For feedback on command execution, use events indicating the video status.
For example:
-
Successfully skipping an ad via a
skipAd
call generates anadSkip
event. If a problem occurs, the event isn't sent. -
Using the
setPlaybackRate
method triggers theplaybackRateChanged
event in response.
To ensure correct video playback on Smart TVs, each method must have a response event.