私はtwilio APIを使用してemberjsアプリケーションでスクリーン共有を実装していますが、画面を共有して停止することに成功しました。ここに私のコードがある - >イベントを取得する方法emberjsのクロムブラウザの共有を停止するハンドラのボタン
this.get('detectRtc').isChromeExtensionAvailable(available => {
if (available) {
const { twilioParticipant } = this.get('participant')
if (this.get('stream') && this.get('stream').active) {
this.get('streamTrack').stop()
this.get('userMedia.mediaStream')
.removeTrack(this.get('streamTrack'))
this.set('isEnabled', false)
twilioParticipant.removeTrack(this.get('streamTrack'))
} else {
this.get('detectRtc').getSourceId(sourceId => {
// "cancel" button is clicked
if (sourceId !== 'PermissionDeniedError') {
// "share" button is clicked extension returns sourceId
this.get('userMedia')
.getScreen(sourceId)
.then(mediaStream => {
this.set('isEnabled', true)
this.set('stream', mediaStream)
this.set('streamTrack', mediaStream.getVideoTracks()[0])
twilioParticipant.addTrack(mediaStream.getVideoTracks()[0])
})
.catch(() => { /* do nothing, but return something */ })
}
})
}
} else {
this.get('flash').status(
'base',
this.get('intl').t('chromeExtension.install'),
{
icon: 'alert-circle',
push: true
}
)
// TODO Show the system popup to install chrome extension from web store
// !!chrome.webstore &&
// !!chrome.webstore.install &&
// chrome.webstore.install(this.webStoreUrl)
}
})
下のスクリーンショットに見られるように、アプリの一番下にあるストップ共有ボタンでありますイベントハンドラに渡して、スクリーン共有ボタンをクリックした後にコードを実行すると、MediaStreamTrackドキュメントに記載されているonendedイベントハンドラがあることがわかりますが、どのように使用するのかわかりません。感謝。
https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack