Reactjs mediaSession不适用于流媒体

Reactjs mediaSession不适用于流媒体,reactjs,mediadevices,get-display-media,mediasession,Reactjs,Mediadevices,Get Display Media,Mediasession,对于简单的视频文件,我的mediaSession工作得非常好。您可以使用媒体键暂停和播放 let video = useRef(null) useEffect(() => { video.current.play() .then(_ => { navigator.mediaSession.metadata = new window.MediaMetadata({ title: 'first', artist: 'whatever video

对于简单的视频文件,我的mediaSession工作得非常好。您可以使用媒体键暂停和播放

let video = useRef(null)

useEffect(() => {

  video.current.play()
  .then(_ => {
    navigator.mediaSession.metadata = new window.MediaMetadata({
      title: 'first',
      artist: 'whatever video',
      album: 'none',
      artwork: [
        { src: 'https://i.imgur.com/fmYrG2N.png',  sizes: '96x96',   type: 'image/png' },
      ]
    });
    sayStuff()
  })
  .catch(error => console.log(error.message));

} , [video])
这是控制台登录暂停和播放的功能

const sayStuff = () => {
  navigator.mediaSession.setActionHandler('play', async function() {
    console.log('> User clicked "Play" icon.');
    await video.current.play();
    navigator.mediaSession.playbackState = "playing";
  });
  
  navigator.mediaSession.setActionHandler('pause', function() {
    console.log('> User clicked "Pause" icon.');
    video.current.pause();
    navigator.mediaSession.playbackState = "paused";
  });
}
这是带有随机视频的视频元素

 <video autoPlay controls src="https://i.imgur.com/RD2KjD0.mp4" ref={video} ></video>
下面是一个活生生的例子:

立即播放视频文件(如果没有,请按play),您可以立即访问媒体键。 按initiate stream启动桌面上的流,但媒体键丢失

很抱歉,时间太长了。。。 总之,我想对流使用媒体密钥。


希望这是清楚的。提前谢谢你

有趣的是,规范中没有提到MediaStreams,我只能找到它。听起来他们只是把它当作“电话”的意思。。。您可能想在这里提出一个问题来说明您的观点,不过我可以看到API的某些部分,如
setPositionState
无法与流一起工作。谢谢您的评论,@kaido!我制作了一张票,希望能收到他们的回音。十指交叉。供参考:由PepperAddict打开,我打开
<button onClick={() => initiateCam()}>initiate Stream</button>
const initiateCam = () => {
  navigator.mediaDevices.getDisplayMedia({video: true})
  .then((stream) => {
    navigator.mediaSession.metadata = new window.MediaMetadata({
      title: 'this',
      artist: 'stream',
      album: 'none',
      artwork: [
        { src: 'https://i.imgur.com/fmYrG2N.png',  sizes: '96x96',   type: 'image/png' },
      ]
    });
    let vidy = video.current;
    vidy.srcObject = stream
    vidy.play().then(() => {
      sayStuff();
    })
  })
}