Allgemeine Concepts der Bildschirmfreigabe
Sie können einen Stream veröffentlichen, der eine Videoansicht Ihres Bildschirms (anstelle einer Kamera) als Quelle verwendet.
Ein mit der Sitzung verbundener Client kann den Stream abonnieren (und anzeigen), wie er einen Stream abonnieren würde, der eine Kamera als Quelle verwendet.
Veröffentlichen eines Streams mit einer Bildschirmfreigabequelle
Um einen Screen-Sharing-Stream zu veröffentlichen, setzen Sie die Eigenschaft videoSource der OTPublisher-Eigenschaftsliste auf "screen":
<OTPublisher
properties={{
videoSource: 'screen',
}}
/>
Der Stream zur Bildschirmfreigabe nimmt Videos aus der gesamten Ansicht der Anwendung auf. Aus diesem Grund sollten Sie Abonnenten im lokalen Client deaktivieren, wenn Sie einen Stream-Sharing-Stream veröffentlichen (um zu verhindern, dass sie im veröffentlichten Stream angezeigt werden).
Die videoSource Eigenschaft des Parameters options des Befehls OT.initPublisher() Methode definiert die Videoquelle für den zu veröffentlichenden Stream. Für die Bildschirmfreigabe setzen Sie diese Eigenschaft auf "screen". In älteren Browser-Versionen konnten Sie auch in "application" oder "window" um einen Typ der Quelle für die gemeinsame Nutzung des Bildschirms anzugeben. In aktuellen Browsern, die die gemeinsame Nutzung des Bildschirms unterstützen, führt die Übergabe eines dieser Werte jedoch zum gleichen Verhalten - der Browser zeigt ein Dialogfeld an, in dem der Endbenutzer die Quelle für die gemeinsame Nutzung des Bildschirms auswählt (die der gesamte Bildschirm oder ein bestimmtes Fenster sein kann). In Electron wird bei der Bildschirmfreigabe der gesamte Bildschirm erfasst, ohne dass der Benutzer um Erlaubnis gefragt wird.
Der folgende Code zeigt, wie man einen Stream veröffentlicht, der die Bildschirmfreigabe als Quelle verwendet:
<div id="publisher"></div>
<div id="screen-preview"></div>
<script>
OT.checkScreenSharingCapability(function(response) {
if(!response.supported || response.extensionRegistered === false) {
// This browser does not support screen sharing.
} else if (response.extensionInstalled === false) {
// Prompt to install the extension.
} else {
// Screen sharing is available. Publish the screen.
var publisher = OT.initPublisher('screen-preview',
{videoSource: 'screen'},
function(error) {
if (error) {
// Look at error.message to see what went wrong.
} else {
session.publish(publisher, function(error) {
if (error) {
// Look error.message to see what went wrong.
}
});
}
}
);
}
});
</script>
Im Fehlerfall wird der Beendigungshandler für die OT.initPublisher() Methode kann ein Fehlerobjekt mit einem der folgenden Fehlercodes übergeben werden:
- 1550 - "Bildschirmfreigabe wird nicht unterstützt."
- 1551 - "Bildschirmfreigabe erfordert eine Typ Erweiterung, aber es ist keine Erweiterung registriert für Typ."
- 1552 - "Bildschirmfreigabe erfordert eine Typ Erweiterung, aber sie ist nicht installiert."
Wenn Sie einen Screen-Sharing-Stream veröffentlichen, werden die folgenden Standardwerte für die options Parameter des OT.initPublisher() Methode:
maxResolution-{ width: 1920, height: 1920 }mirror-falsefitMode-"contain"publishAudio-false
Darüber hinaus verwenden die Abonnenten des resultierenden Streams standardmäßig auch die "contain" fitMode Umgebung.
Für Informationen über maxResolution und fitModefinden Sie in den nächsten beiden Abschnitten.
Standardmäßig, skalierbares Video ist für Streams zur Bildschirmfreigabe deaktiviert. Sie können skalierbares Video für Screen-Sharing-Streams aktivieren, indem Sie die Option scalableScreenshare Option für die OT.initPublisher() Methode. Anmerkung: skalierbares Video für Screen-Sharing-Streams ist ein beta Funktion.
Um den Bildschirm des Geräts anstelle einer Kamera als Videoquelle zu verwenden, verwenden Sie die PublisherKit-Klasse, um einen benutzerdefinierten Video-Capturer zu verwenden. Ein Codebeispiel finden Sie in der Aktivität zur Bildschirmfreigabe im Verzeichnis samples des SDK.
Rufen Sie die setPublisherVideoType(PublisherKit.PublisherKitVideoType type) Eigenschaft des Publisher-Objekts und übergeben in PublisherKit.PublisherKitVideoTypePublisherKitVideoTypeScreen. Dadurch wird der veröffentlichte Stream als Videoquelle für die Bildschirmfreigabe (anstelle einer Kamera) gekennzeichnet.
Bevor Sie einen Bildschirmfreigabe-Stream veröffentlichen, der den Bildschirmvideotyp in einer gerouteten Sitzung verwendet, sollten Sie den Befehl setAudioFallbackEnabled(boolean enabled) Methode für das PublisherKit-Objekt und übergeben Sie in false. Dadurch wird die Funktion "Nur Audio" deaktiviert, so dass das Video bei Teilnehmern nicht ausfällt. Siehe Der Vonage Video Media Router und die Medienmodi.
Standardmäßig, skalierbares Video ist für Streams zur Bildschirmfreigabe deaktiviert. Sie können skalierbares Video für Streams zur gemeinsamen Nutzung von Bildschirmen aktivieren, indem Sie den PublisherKit.Builder.scalableScreenshare() Methode.
Um den Bildschirm des Geräts anstelle einer Kamera als Videoquelle zu verwenden, verwenden Sie die PublisherKit-Klasse, um einen benutzerdefinierten Video-Capturer zu verwenden. Ein Codebeispiel finden Sie im Screen-Sharing-Projekt im Verzeichnis samples des SDK.
Setzen Sie die OTPublisherKit.videoType Eigenschaft zu OTPublisherKitVideoTypeScreen (definiert in OTPublisherKitVideoType). Dies kennzeichnet den veröffentlichten Stream als eine Videoquelle für die Bildschirmfreigabe (anstelle einer Kamera).
Bevor Sie einen Bildschirmfreigabe-Stream veröffentlichen, der den Bildschirmvideotyp in einer Sitzung verwendet, die den Vonage Video Media Server nutzt, sollten Sie die Option OTPublisherKit.audioFallbackEnabled Eigenschaft auf NO (false in swift). Dadurch wird die Funktion "Nur Audio" deaktiviert, so dass das Video bei Abonnenten nicht ausfällt. Siehe Der Vonage Video Media Router und die Medienmodi.
Standardmäßig, skalierbares Video ist für Streams zur Bildschirmfreigabe deaktiviert. Sie können skalierbares Video für Streams zur gemeinsamen Nutzung von Bildschirmen aktivieren, indem Sie den OTPublisherKitSettings.scalableScreenshare Eigentum. Anmerkung: skalierbares Video für Screen-Sharing-Streams ist ein beta Funktion.
Um den Bildschirm des Geräts anstelle einer Kamera als Videoquelle zu verwenden, verwenden Sie die PublisherKit-Klasse, um einen benutzerdefinierten Video-Capturer zu verwenden. Ein Codebeispiel finden Sie im Screen-Sharing-Projekt im Verzeichnis samples des SDK.
Setzen Sie die OTPublisherKit.videoType Eigenschaft zu OTPublisherKitVideoTypeScreen (definiert in OTPublisherKitVideoType). Dies kennzeichnet den veröffentlichten Stream als eine Videoquelle für die Bildschirmfreigabe (anstelle einer Kamera).
Bevor Sie einen Bildschirmfreigabe-Stream veröffentlichen, der den Bildschirmvideotyp in einer Sitzung verwendet, die den Vonage Video Media Server nutzt, sollten Sie die Option OTPublisherKit.audioFallbackEnabled Eigenschaft auf NO (false in swift). Dadurch wird die Funktion "Nur Audio" deaktiviert, so dass das Video bei Abonnenten nicht ausfällt. Siehe Der Vonage Video Media Router und die Medienmodi.
Standardmäßig, skalierbares Video ist für Streams zur Bildschirmfreigabe deaktiviert. Sie können skalierbares Video für Streams zur gemeinsamen Nutzung von Bildschirmen aktivieren, indem Sie den OTPublisherKitSettings.scalableScreenshare Eigentum. Anmerkung: skalierbares Video für Screen-Sharing-Streams ist ein beta Funktion.
Um den Bildschirm des Geräts anstelle einer Kamera als Videoquelle zu verwenden, müssen Sie eine benutzerdefinierter Video-Capturer.
Hier ist ein Beispiel, das einen benutzerdefinierten Video-Capturer definiert, um die gemeinsame Nutzung des Bildschirms zu implementieren (wobei der Bildschirm anstelle einer Kamera als Videoquelle verwendet wird):
Setzen Sie die VideoSourceType Eigenschaft des Publisher-Objekts auf OpenTok.VideoSourceType.Screen. Dadurch wird der veröffentlichte Stream als Videoquelle für die Bildschirmfreigabe (anstelle einer Kamera) gekennzeichnet.
Standardmäßig, skalierbares Video ist für Streams zur Bildschirmfreigabe deaktiviert. Sie können skalierbares Video für Streams zur gemeinsamen Nutzung von Bildschirmen aktivieren, indem Sie den Publisher.Builder.ScalableScreenshare Eigentum.
Anmerkung: skalierbares Video für Screen-Sharing-Streams ist ein beta Funktion.
Festlegen des Videotyps ("Bildschirm" oder "Kamera") für einen Stream
Sie können einen Stream, der eine Screen-Sharing-Videoquelle verwendet, auf dieselbe Weise abonnieren wie einen Stream, der eine Kamera als Quelle verwendet. Siehe Abonnieren von Streams.
Sie können erkennen, dass ein Stream ein Screen-Sharing-Stream ist, indem Sie die Option videoType Eigenschaft des Ereignisobjekts in der OTSession streamCreated Ereignis. Für einen Screen-Sharing-Stream wird diese Eigenschaft auf "screen":
<OTSession
applicationId="the API key"
sessionId="the session ID"
token="the token"
eventHandlers={{
streamCreated: event => {
console.log(event.videoType, 'stream created', event.streamId);
}
}}>
{ /* ... */ }
</OTSession>
Das OTSession-Objekt sendet ein streamPropertyChanged-Ereignis, wenn sich die Abmessungen des Streams eines anderen Clients ändern. Dies kann der Fall sein, wenn der veröffentlichende Client die Größe eines freigegebenen Fensters ändert (z. B. ein Browserfenster in einer Anwendung, die das Vonage Video Web Client SDK verwendet). Die Eigenschaft changedProperty des Ereignisobjekts wird auf "videoDimensions" gesetzt. Die Eigenschaften stream.height und stream.width des Ereignisobjekts sind die neue Breite und Höhe des Videos.
<OTSession
applicationId="the API key"
sessionId="the session ID"
token="the token"
eventHandlers={{
streamPropertyChanged: event => {
console.log(event.stream.streamId, 'stream property', event.changedProperty, 'changed:', event.stream.height, event.stream.width);
}
}}>
{ /* ... */ }
</OTSession>
Sie können die Videoabmessungen und videoType-Details für Streams verwenden, um die Größe oder Abmessungen der entsprechenden Abonnenten in der Benutzeroberfläche anzupassen. Einzelheiten zum Anpassen des Layouts von Abonnenten in der Benutzeroberfläche finden Sie unter Abonnieren von Streams.
Das Stream-Objekt enthält eine videoType Eigenschaft. Diese kann auf einen der folgenden Werte gesetzt werden
"camera"- ein Standard-Videostream, der eine Kamera als Videoquelle verwendet"screen"- einen Video-Stream zur gemeinsamen Nutzung des Bildschirms"custom"- ein von einem Web-Client veröffentlichter Stream, der ein HTML-VideoTrack-Element als Videoquelle verwendetundefined- ein Stream ist rein sprachlich (siehe die Anleitung nur mit Stimme)
Diese Eigenschaft kann sich ändern, wenn ein von einem mobilen Gerät veröffentlichter Stream von einem Kamera- zu einem Bildschirmfreigabevideotyp wechselt. Wenn sich der Videotyp ändert, sendet das Sitzungsobjekt eine streamPropertyChanged Veranstaltung.
Der folgende Code abonniert Streams und fügt sie je nach Videotyp zu verschiedenen HTML-DIV-Containerelementen hinzu:
<div id="people"></div>
<div id="screens"></div>
<script>
session.on('streamCreated', function(event) {
var subOptions = {insertMode: 'append'};
if(event.stream.videoType === 'screen') {
session.subscribe(event.stream, 'screens', subOptions);
} else {
session.subscribe(event.stream, 'people', subOptions);
}
});
</script>
Das Stream-Objekt enthält eine videoType Eigenschaft. Diese kann auf einen der folgenden Werte gesetzt werden, die in der Aufzählung Stream.StreamVideoType definiert sind:
StreamVideoTypeCamera- ein Standard-Videostream, der eine Kamera als Videoquelle verwendetStreamVideoTypeScreen- einen Video-Stream zur gemeinsamen Nutzung des BildschirmsStreamVideoTypeCustom- ein von einem Web-Client veröffentlichter Stream, der ein HTML-VideoTrack-Element als Videoquelle verwendet.
Das Stream-Objekt enthält eine videoType Eigenschaft. Diese kann auf einen der folgenden Werte gesetzt werden, die in der Aufzählung OTStreamVideoType definiert sind:
OTStreamVideoTypeCamera- ein Standard-Videostream, der eine Kamera als Videoquelle verwendetOTStreamVideoTypeScreen- einen Video-Stream zur gemeinsamen Nutzung des BildschirmsOTStreamVideoTypeCustom- ein von einem Web-Client veröffentlichter Stream, der ein HTML-VideoTrack-Element als Videoquelle verwendet
Das Stream-Objekt enthält eine videoType Eigenschaft. Diese kann auf einen der folgenden Werte gesetzt werden, die in der Aufzählung OTStreamVideoType definiert sind:
OTStreamVideoTypeCamera- ein Standard-Videostream, der eine Kamera als Videoquelle verwendetOTStreamVideoTypeScreen- einen Video-Stream zur gemeinsamen Nutzung des BildschirmsOTStreamVideoTypeCustom- ein von einem Web-Client veröffentlichter Stream, der ein HTML-VideoTrack-Element als Videoquelle verwendet
Das Stream-Objekt enthält eine VideoSourceType Eigenschaft. Diese kann auf einen der folgenden Werte gesetzt werden, die in der OpenTok.VideoSourceType enum:
Camera- ein Standard-Videostream, der eine Kamera als Videoquelle verwendetScreen- einen Video-Stream zur gemeinsamen Nutzung des BildschirmsCustom- ein von einem Web-Client veröffentlichter Stream, der ein HTML-VideoTrack-Element als Videoquelle verwendet.
Abonnieren von Streams zur Bildschirmfreigabe
Das Stream-Objekt enthält eine videoType Eigenschaft. Diese kann auf einen der folgenden Werte gesetzt werden
"camera"- ein Standard-Videostream, der eine Kamera als Videoquelle verwendet"screen"- einen Video-Stream zur gemeinsamen Nutzung des Bildschirms"custom"- ein von einem Web-Client veröffentlichter Stream, der ein HTML-VideoTrack-Element als Videoquelle verwendetundefined- ein Stream ist rein sprachlich (siehe die Anleitung nur mit Stimme)
Diese Eigenschaft kann sich ändern, wenn ein von einem mobilen Gerät veröffentlichter Stream von einem Kamera- zu einem Bildschirmfreigabevideotyp wechselt. Wenn sich der Videotyp ändert, sendet das Sitzungsobjekt eine streamPropertyChanged Veranstaltung.
Der folgende Code abonniert Streams und fügt sie je nach Videotyp zu verschiedenen HTML-DIV-Containerelementen hinzu:
<div id="people"></div>
<div id="screens"></div>
<script>
session.on('streamCreated', function(event) {
var subOptions = {insertMode: 'append'};
if(event.stream.videoType === 'screen') {
session.subscribe(event.stream, 'screens', subOptions);
} else {
session.subscribe(event.stream, 'people', subOptions);
}
});
</script>
Sie können einen Stream, der eine Screen-Sharing-Videoquelle verwendet, auf dieselbe Weise abonnieren wie einen Stream, der eine Kamera als Quelle verwendet. Siehe Abonnieren von Streams.
Sie können einen Stream, der eine Screen-Sharing-Videoquelle verwendet, auf dieselbe Weise abonnieren wie einen Stream, der eine Kamera als Quelle verwendet. Siehe Abonnieren von Streams in Schnell.
Sie können einen Stream, der eine Screen-Sharing-Videoquelle verwendet, auf dieselbe Weise abonnieren wie einen Stream, der eine Kamera als Quelle verwendet. Siehe Abonnieren von Streams in Objektiv-C.
Sie können einen Stream, der eine Screen-Sharing-Videoquelle verwendet, auf dieselbe Weise abonnieren wie einen Stream, der eine Kamera als Quelle verwendet. Siehe Abonnieren von Streams.