cookpete / react-player

A React component for playing a variety of URLs, including file paths, YouTube, Facebook, Twitch, SoundCloud, Streamable, Vimeo, Wistia and DailyMotion

Home Page:https://cookpete.github.io/react-player

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Inconsistant sound volume when player state changes

Betree opened this issue · comments

I just updated from 0.25.3 to 1.2.1 and encountered this issue :

When seeking player position with a Youtube video either programmatically or manually by clicking on the progress bar (video controls must be activated) sound resets to its default value. It also happens when playing / pausing.

How to reproduce

  1. Take the default demo app and add controls to player's attributes
  2. Load Youtube Test A
  3. Change volume to a low value using player's controls
  4. Click on progress bar to seek a different position
  5. Volume changes

Preview

bugreactplayer 1

Problems comes from onPlay

https://github.com/CookPete/react-player/blob/d0334a2f55ce8258f38a7ac06a3b4799f8c2bb93/src/Player.js#L137

As ReactPlayer state is not updated when changing volume manually it will always go back to its default value when seeking or pausing / playing.

I don't know about other players but Youtube API doesn't seems to provide a onVolumeChange method. So the best solution for me is to set volume to null per default and only call setVolume in onPlay when it is set to a number value.

Would you accept a PR implementing this solution @cookpete ?

As of 1.3.0, the default volume is set to null and setVolume will not be called unless a non-null volume prop is passed in.

Thanks, that was fast !

The only downside to this is that muted no longer works if volume is not set, as we do not know what the volume was before muting the player. Then again, I don't think muted is used by many.