Veröffentlichen: Einstellungen & Geräte
Verwenden Sie diese Anleitung, um zu konfigurieren, wie Sie Ihre ausgehenden Video- und Audiodaten erfassen und kodieren. Es behandelt die Geräteberechtigung und -auswahl, das Speichern von Geräten, den Kameramodus, Auflösung und Bildrate, Inhaltshinweise für Bewegung oder Text, Veröffentlichung aus alternativen Quellen (Canvas, Video, Web-Audio), und wo Sie erweiterte Publisher-Optionen finden.
Überprüfen Sie die Berechtigungen für Kamera und Mikrofon
Bevor ein Publisher auf die Kamera und das Mikrofon des Clients zugreifen kann, muss der Benutzer den Zugriff gewähren. Das Publisher-Objekt versendet Ereignisse, wenn der Benutzer den Zugriff auf Kamera und Mikrofon gewährt oder verweigert:
publisher.on({
accessAllowed: function () {
// The user granted access to the camera and mic.
},
accessDenied: function () {
// The user denied access to the camera and mic.
}
});
Außerdem werden Ereignisse ausgelöst, wenn das Dialogfeld Zulassen/Verweigern geöffnet oder geschlossen wird:
publisher.on({
accessDialogOpened: function () {
// The Allow/Deny dialog box is opened.
},
accessDialogClosed: function () {
// The Allow/Deny dialog box is closed.
}
});
Der Verlag hat eine accessAllowed Eigenschaft, die angibt, ob der Zugang gewährt wurde.
Kamera und Mikrofon auswählen
Wählen Sie, welche Kamera und welches Mikrofon der Publisher verwenden soll. Sie können die Geräte aufzählen und über Publisher-Optionen auswählen.
Sie können den Herausgeber veranlassen, die rückwärtige Kamera des Geräts zu verwenden, indem Sie eine Eigenschaftsstütze des Befehls OTPublisher Komponente und die Einstellung der cameraPosition Eigenschaft dieses Objekts auf "back":
<OTPublisher
properties={{
cameraPosition: 'back',
}}
/>
Beachten Sie, dass Sie auch einen Screen-Sharing-Stream veröffentlichen können, bei dem die Quelle der Bildschirm des Clients und nicht eine Kamera ist. Für Details siehe Bildschirmfreigabe.
Sie können (optional) ein Audio- und Videoeingabegerät angeben, das der Herausgeber verwenden soll. Wenn Sie den OT.initPublisher() Methode können Sie (optional) die audioSource und videoSource Eigenschaften der properties Objekt, das an die OT.initPublisher() Methode.
Verwenden Sie zunächst die OT.getDevices() Methode, um die verfügbaren Geräte aufzuzählen. Das Array der Geräte wird als devices Parameter des callback Funktion, die an die OT.getDevices() Methode. Der folgende Code ruft zum Beispiel eine Liste von Audio- und Videoeingabegeräten ab:
var audioInputDevices;
var videoInputDevices;
OT.getDevices(function(error, devices) {
audioInputDevices = devices.filter(function(element) {
return element.kind == "audioInput";
});
videoInputDevices = devices.filter(function(element) {
return element.kind == "videoInput";
});
for (var i = 0; i < audioInputDevices.length; i++) {
console.log("audio input device: ", audioInputDevices[i].deviceId);
}
for (i = 0; i < videoInputDevices.length; i++) {
console.log("video input device: ", videoInputDevices[i].deviceId);
}
});
Jedes Gerät, das von OT.getDevices() hat eine eindeutige Geräte-ID, die als deviceId Eigenschaft. Sie können diese Geräte-ID-Werte als die audioSource und videoSource Eigenschaften der properties Objekt, das an OT.initPublisher():
var pubOptions =
{
audioSource: audioInputDevices[0].deviceId,
videoSource: videoInputDevices[0].deviceId
};
var publisher = OT.initPublisher(null, pubOptions, function(error) {
console.log("OT.initPublisher error: ", error);
});
Setzen Sie die videoSource Eigenschaft zu null oder false in einer reinen Sprachsitzung (siehe Veröffentlichung in einer Sprachsitzung).
Setzen Sie die videoSource Eigenschaft zu null oder false in einer reinen Sprachsitzung.
Die Vonage Video-Hardware-Einrichtungskomponente bietet eine Benutzeroberfläche, über die die Kunden die zu verwendende Kamera und das Mikrofon auswählen können. Sie wurde unter Verwendung der OT.getDevices() Methode.
Beachten Sie, dass Sie auch einen Screen-Sharing-Stream veröffentlichen können, bei dem die Quelle der Bildschirm des Clients und nicht eine Kamera ist. Für Details siehe Bildschirmfreigabe.
Sie können auch die vom Herausgeber verwendete Kamera ändern.
Sie können auch die vom Herausgeber verwendete Audioquelle ändern.
Geräteauswahl merken
Im HTTPS-Kontext können einige Browser die Kamera- und Mikrofonauswahl für spätere Besuche speichern. Im IE können Sie zum Beispiel Folgendes einstellen usePreviousDeviceSelection: true bei der Initialisierung des Publishers:
var pubOptions = { usePreviousDeviceSelection: true };
var publisher = OT.initPublisher(null, pubOptions, function (error) {
console.log("OT.initPublisher error:", error);
});
Sie können auch einstellen facingMode zur Auswahl von Front- oder Rückkamera auf unterstützten Geräten und zur Deaktivierung der automatischen Verwaltung von Audioeingabegeräten über disableAudioInputDeviceManagement wenn Sie die volle Kontrolle benötigen.
Um den Benutzer aufzufordern, die zu verwendende Kamera und das Mikrofon im IE auszuwählen (und frühere Geräteauswahlen zu ignorieren), setzen Sie nicht die usePreviousDevices Eigenschaft in den Optionen, die Sie in der OT.initPublisher() Methode (oder setzen Sie sie auf false(die Standardeinstellung).
Deaktivieren Sie die automatische Verwaltung von Audio-Eingabegeräten (erweitert):
var pubOptions = {disableAudioInputDeviceManagement: true};
var publisher = OT.initPublisher(null, pubOptions, function(error) {
console.log("Publishing a stream");
});
Auflösung und Bildrate einstellen
Stellen Sie die empfohlene Videoauflösung und Bildrate über OT.initPublisher() Optionen:
var publisher = OT.initPublisher(targetElement, {
resolution: '1280x720', // 1920x1080, 1280x720, 640x480, or 320x240
frameRate: 15 // 30, 15, 7, or 1
});
Hinweis: Die tatsächliche Teilnehmerauflösung und Bildrate kann je nach Netzwerk- und Gerätebedingungen variieren.
Stream-Einstellungen (Web)
Um eine empfohlene Videoauflösung für einen veröffentlichten Stream festzulegen, setzen Sie die resolution Eigenschaft der properties Parameter, den Sie in OT.initPublisher():
var publisherProperties = {resolution: '1280x720'};
var publisher = OT.initPublisher(targetElement, publisherProperties);
publisher.on('streamCreated', function(event) {
console.log('Stream resolution: ' + event.stream.videoDimensions.width + 'x' + event.stream.videoDimensions.height);
});
Gültige Werte sind "1920x1080", "1280x720", "640x480"und "320x240". Die Standardeinstellung ist 640x480.
Um eine empfohlene Bildrate für einen veröffentlichten Stream festzulegen, setzen Sie die frameRate Eigentum:
var publisherProperties = {frameRate: 7};
var publisher = OT.initPublisher(targetElement, publisherProperties);
publisher.on('streamCreated', function(event) {
console.log('Frame rate: ' + event.stream.frameRate);
});
Gültige Werte sind 30, 15, 7 und 1.
Wenn der Herausgeber eine Bildrate angibt, wird die tatsächliche Bildrate des Video-Streams als frameRate Eigenschaft des Stream-Objekts, obwohl die tatsächliche Bildrate je nach den sich ändernden Netzwerk- und Systembedingungen variiert. Wenn Sie keine Bildrate angeben, wenn Sie OT.initPublisherist diese Eigenschaft undefiniert.
Für Sitzungen, die den Media Router verwenden (Sitzungen mit dem Medienbetrieb auf "geroutet" eingestellt ist), verringert sich durch die Verringerung der Bildrate proportional die maximale Bandbreite, die der Stream nutzen kann.
In Sitzungen mit dem Medienbetrieb auf "Relayed" eingestellt ist, wird durch die Verringerung der Bildrate die Bandbreite des Streams nicht verringert.
Die videoHeight() und videoWidth() Methoden geben die konfigurierte Auflösung des Publisher-Objekts zurück. Die tatsächliche Auflösung eines Subscriber-Videostreams wird von der Methode videoWidth() und videoHeight() Methoden des Subscriber-Objekts. Diese können sich von den Werten der resolution Eigenschaft, die Sie an OT.initPublisher() wenn der veröffentlichende Browser die gewünschte Auflösung nicht unterstützt.
Hinweise zum Videoinhalt
Sie können einen Hinweis auf den Videoinhalt einstellen, um die Qualität und Leistung eines veröffentlichten Videos zu verbessern. Dies kann in bestimmten Situationen nützlich sein:
- Bei der Veröffentlichung von Videos zur Bildschirmfreigabe, die in erster Linie entweder Text- oder Videoinhalte enthalten.
- Wenn Sie bei Verwendung einer Kamera-Videoquelle die Bildrate verringern und die Auflösung beibehalten möchten, können Sie den Inhaltshinweis auf "Text" oder "Detail" setzen. Wenn der Herausgeber die Verwendung von skalierbarem Video unterstützt, sendet er in einer gerouteten Sitzung einen Stream mit voller Auflösung und niedriger Bildrate und - wenn die Netzwerkbedingungen es erlauben - einen Stream mit voller Auflösung und normaler Bildrate. Der OpenTok Media Router leitet einen dieser Streams an die Abonnenten weiter.
Dadurch wird der Browser angewiesen, Kodierungs- oder Verarbeitungsmethoden zu verwenden, die für den von Ihnen angegebenen Inhaltstyp besser geeignet sind.
Legen Sie den anfänglichen Hinweis auf den Videoinhalt für einen Stream fest, indem Sie den videoContentHint Eigenschaft der Optionen, die Sie in der OT.initPublisher() Methode:
var publisherOptions = {
videoContentHint: "text",
// other options, such as videoSource: "screen"
};
var publisher = OT.initPublisher(targetElement, publisherOptions, callbackFunction);
Sie können den Hinweis auf den Videoinhalt dynamisch ändern, indem Sie die setVideoContentHint() Methode eines Publisher-Objekts:
publisher.setVideoContentHint("motion");
Sie können den Hinweis auf den Videoinhalt auf einen der folgenden Werte setzen:
""- Es wird kein Hinweis gegeben (Standardeinstellung). Der Veröffentlichungs-Client schätzt nach bestem Wissen und Gewissen, wie Videoinhalte behandelt werden sollten."motion"- Die Spur sollte so behandelt werden, als ob sie Video enthält, bei dem Bewegung wichtig ist. Sie können diese Einstellung z. B. für einen Video-Stream zur Bildschirmfreigabe verwenden, der Video enthält."detail"- Die Spur sollte so behandelt werden, als ob die Videodetails besonders wichtig wären. Sie können diese Einstellung z. B. für einen Videostream zur Bildschirmfreigabe verwenden, der Textinhalte, Bilder oder Strichzeichnungen enthält."text"- Die Spur sollte so behandelt werden, als ob Textdetails besonders wichtig wären. Sie können diese Einstellung z. B. für einen Videostream zur Bildschirmfreigabe verwenden, der Textinhalte enthält.
Bei den Inhaltshinweisen "Text" und "Detailliert" versucht der Browser, eine hohe Auflösung beizubehalten, auch wenn er die Videobildrate reduzieren muss. Bei dem Inhaltshinweis "Bewegung" reduziert der Browser die Auflösung, um zu verhindern, dass die Bildrate einbricht.
Chrome 60+, Safari 12.1+, Edge 79+, Opera 47+, aktuelle Versionen von Samsung Internet, WebView Android und WebView auf iOS 12.2+ unterstützen Hinweise auf Videoinhalte. In anderen Browsern wird die Einstellung ignoriert.
Maximale Bitrate einstellen
Sie können eine maximale Videobitrate für einen Publisher festlegen, um die Bandbreitennutzung zu begrenzen (z. B. bei Netzwerken mit Gebühren). Verwenden Sie entweder vordefinierte Voreinstellungen (DEFAULT, BW_SAVER, EXTRA_BW_SAVER) oder legen Sie einen Rohbitratenwert fest; der Encoder passt sich innerhalb des zulässigen Bereichs an die Netzwerkbedingungen an.
Aus alternativen Quellen veröffentlichen (Web)
Veröffentlichen aus benutzerdefinierten Videoquellen
Sie können die Videoquelle für einen Publisher auf ein Video-MediaStreamTrack-Objekt festlegen. Damit können Sie Folgendes tun:
Veröffentlichen Sie Videos mit einem HTML-Canvas-Element als Video. Sie können das
captureStream()Methode des HTMLCanvasElement-Objekts und rufen Sie diegetVideoTracks()Methode des resultierenden CanvasCaptureMediaStream-Objekts, um ein Video-MediaStreamTrack-Objekt zu erhalten.Veröffentlichen Sie Videos aus einem Videoelement. Rufen Sie die
captureStream()Methode eines HTMLVideoElement-Objekts, um ein MediaStream-Objekt zu erhalten. DiegetVideoTracks()Methode des MediaStream-Objekts gibt ein Array von Audio-MediaStreamTrack-Objekten zurück (normalerweise eines). Sie können dann das MediaStreamTrack-Objekt alsaudioSourceEigenschaft deroptionsObjekt, das Sie an dieOT.initPublisher()Methode.
Sie können ein MediaStreamTrack-Videoobjekt als videoSource Eigenschaft der options Objekt, das Sie an die OT.initPublisher() Methode. Dadurch wird das durch das MediaStreamTrack-Objekt dargestellte Video zur Videoquelle für den veröffentlichten Stream.
Das Festlegen der Videoquelle auf ein MediaStreamTrack-Objekt wird im Vonage Video Plugin für Internet Explorer nicht unterstützt.
Veröffentlichen aus benutzerdefinierten Audioquellen
Sie können die Audioquelle für einen Publisher auf ein Audio MediaStreamTrack-Objekt festlegen. Damit können Sie Folgendes tun:
- Veröffentlichen Sie Audio aus einem Audio- oder Videoelement. Rufen Sie die
captureStream()Methode eines HTMLAudioElement-Objekts oder eines HTMLVideoElement-Objekts, um ein MediaStream-Objekt zu erhalten. DiegetAudioTracks()Methode des MediaStream-Objekts ist ein Array von Audio-MediaStreamTrack-Objekten (normalerweise eins). Sie können dann das MediaStreamTrack-Objekt alsaudioSourceEigenschaft deroptionsObjekt, das Sie an dieOT.initPublisher()Methode. - Veröffentlichen Sie Audio aus einem Audio MediaStreamTrack-Objekt. Sie können zum Beispiel das AudioContext-Objekt und die Web-Audio-API verwenden, um dynamisch Audio zu erzeugen. Sie können dann die Funktion
createMediaStreamDestination().stream.getAudioTracks()[0]auf das AudioContext-Objekt, um das Audio-MediaStreamTrack-Objekt zu erhalten, das alsaudioSourceEigenschaft deroptionsObjekt, das Sie an dieOT.initPublisher()Methode.
Anwenden von Filtern und Effekten
Sie können Filter und Effekte auf Audio- oder Videodaten anwenden, die von einem Mikrofon oder einer Kamera stammen, die als Quelle für einen veröffentlichten Stream verwendet wird. Siehe Filter und Effekte.
Andere Audio- und Videooptionen
Die vollständige Liste der Optionen finden Sie unter Einstellungen des Herausgebers.