我正在使用 npm react-player 在反应应用程序中播放一些音频和视频文件。我允许用户切换音频的自动播放功能。
const ReactPlayer = require('react-player').default;
const autoplay = true; // if user chose to enable autoplay
React.createElement(ReactPlayer, { playing: autoplay, url: 'some/audio.wav' })
当播放器被渲染并开始在 chrome android 浏览器中播放时,它还会启动一个原生 android 播放器,(可以在 os 通知区域访问)
两个播放器完全同步,但如果浏览器播放器暂停,则本机播放器会继续播放。此外,如果在浏览器播放器的时间线上拖动点,它们会变得不同步并互相交谈。
有趣的是,当自动播放未打开,但用户必须手动按下将播放属性设置为的按钮时true
,本机音频播放器和浏览器播放器控件会相互影响,如果在浏览器中暂停,则两者都会暂停,如果暂停在通知区域中会暂停并保持同步。
我怎样才能解决这个问题?
更新:
我还没有尝试更多。我没有在渲染组件之前设置playing
为 true,而是尝试获取 html 元素componentDidMount()
并在那里使用该play()
函数。不幸的是,这具有相同的行为,它似乎启动了 2 个独立的播放器,最终将变得不同步:(
componentDidMount () {
const player = document.getElementById(this.state.id);
if (player) {
const audio = player.getElementsByTagName('audio');
if (audio && audio.length > 0) {
this.state.autoplay && player.firstElementChild.play();
}
}
},