The Omny Studio embeddable iframe player can be programmatically controlled on your own website using the player.js Javascript library. 

Player.js allows you to interface with the iframe using a set of standardized methods and events across a wide range of supported rich media players.

Read the player.js documentation to learn how to implement player.js on your website.

View demo code and example to see it working live.

Supported events

The Omny Studio embed player emits the following player.js events

  • play - when the player is played

  • pause - when the player is paused

  • ended - when the player has finished playing the clip

  • timeupdate - while the player is playing, updates the current time in seconds and the duration in seconds¬†

Supported methods

The Omny Studio embed player supports the following player.js methods

  • play() - play the player

  • pause() - pause the player

  • getPaused() - returns if the player is paused

  • setCurrentTime() - seeks to the time in seconds

  • getCurrentTime() - returns the current position in seconds

  • getDuration() - returns the duration in seconds

  • mute() - mutes the player

  • unmute() - unmutes the player

  • getMuted() - returns if the player is muted

  • getVolume() - returns the player's volume in %

  • setVolume() - sets the player's volume in %

iFrame autoplay policy

Due to recent Google Chrome's autoplay policy changes, programmatically playing the embed using player.js might be restricted by default.

You can workaround the behaviour by adding allow="autoplay" to the iframe element which will delegate the play permission to the cross-domain iframe (assumes your site has autoplay permissions).

For example, your iframe code will look like

<iframe src="https://omny.fm/..." allow="autoplay"></iframe>

Referrer policy

If your website includes a "Referrer-Policy", specifically a value of Referrer-Policy: same-origin, then player.js might not work out of the box.

By default, for security reasons, the player.js library is designed to only send events to the parent window/document by specifying the Window.postMessage() targetOrigin parameter. The targetOrigin is assumed to be the document.referrer.

If the referrer policy same-origin is specified, then the Omny.fm embed player and player.js cannot automatically determine which origin it should send messages to.

You can overcome this issue by specifying a referrer URL parameter on the omny.fm embed player iframe URL with the domain of your website (including the protocol).

For example

<iframe src="https://omny.fm/shows/breakfast-with-john/baltic-bumpers/embed?style=cover&referrer=https://example.com" allow="autoplay; clipboard-write" frameborder="0" width="100%" height="180"></iframe>
Did this answer your question?