Reactjs mediaSession不适用于流媒体
对于简单的视频文件,我的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
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();
})
})
}