Veröffentlichen: Grundlagen
In diesem Leitfaden werden die wichtigsten Schritte zur Veröffentlichung eines Streams beschrieben: Erstellen eines Publishers, Starten des Streams in einer Sitzung, sicheres Beenden des Streams und Zerstören der Ressourcen, wenn Sie fertig sind.
Ein Publisher-Objekt wird verwendet, um einen Audio-Video-Stream vom Mikrofon und der Kamera des Systems zur Verwendung in einer Vonage Video-Sitzung zu erfassen.
Sie können auch einen Publisher verwenden, um eine Bildschirmfreigabe Video-Stream.
Initialisierung eines Verlagsobjekts
Die OT.initPublisher() Methode initialisiert und gibt ein Publisher-Objekt zurück. Das Publisher-Objekt stellt die Ansicht eines Videos dar, das Sie veröffentlichen:
var publisher;
var targetElement = 'publisherContainer';
publisher = OT.initPublisher(targetElement, null, function(error) {
if (error) {
// The client cannot publish.
// You may want to notify the user.
} else {
console.log('Publisher initialized.');
}
});
Die OT.initPublisher() erhält drei Parameter:
targetElement- (Optional) Legt das DOM-Element fest, das durch das Publisher-Video ersetzt wird.properties- (Optional) Eine Reihe von Eigenschaften, mit denen der Publisher angepasst wird. DiepropertiesParameter enthält auch Optionen zur Angabe eines vom Herausgeber verwendeten Audio- und Video-Eingabegeräts. DerpropertiesParameter enthält auch Optionen zur Anpassung des Erscheinungsbildes der Ansicht in der HTML-Seite (siehe Anpassen der Benutzeroberfläche) und wählen Sie, ob Audio und Video veröffentlicht werden sollen (siehe Nur Audio oder Video veröffentlichenWeitere Optionen für Verlage finden Sie in der Dokumentation des ProgrammspropertiesParameter des OT.initPublisher() Methode.completionHandler- (Optional) Ein Beendigungshandler, der angibt, ob der Publisher erfolgreich oder mit einem Fehler instanziiert wurde.
Sie können dieses Publisher-Objekt an die Session.publish() Methode, um einen Stream in einer Sitzung zu veröffentlichen.
Vor dem Anruf Session.publish()können Sie dieses Publisher-Objekt verwenden, um das Mikrofon und die Kamera zu testen, die mit dem Publisher verbunden sind.
Die insertMode Eigenschaft der properties Parameter des OT.initPublisher() Methode gibt an, wie das Publisher-Objekt in das HTML-DOM eingefügt wird, und zwar in Bezug auf die targetElement Parameter. Sie können diesen Parameter auf einen der folgenden Werte einstellen:
"replace"- Das Publisher-Objekt ersetzt den Inhalt des targetElements. Dies ist der Standard."after"- Das Publisher-Objekt ist ein neues Element, das nach dem targetElement im HTML-DOM eingefügt wird. (Publisher und targetElement haben beide dasselbe Elternelement)."before"- Das Publisher-Objekt ist ein neues Element, das vor dem targetElement im HTML-DOM eingefügt wird. (Publisher und targetElement haben beide dasselbe Elternelement)."append"- Das Publisher-Objekt ist ein neues Element, das als untergeordnetes Element des targetElements hinzugefügt wird. Wenn es weitere untergeordnete Elemente gibt, wird der Publisher als letztes untergeordnetes Element des targetElements angefügt.
Der folgende Code fügt zum Beispiel ein neues Publisher-Objekt als Kind einer publisherContainer DOM-Element:
// Try setting insertMode to other values: "replace", "after", or "before":
var publisherProperties = {insertMode: "append"};
var publisher = OT.initPublisher('publisherContainer', publisherProperties, function (error) {
if (error) {
console.log(error);
} else {
console.log("Publisher initialized.");
}
});
Für einen einfachen Publisher verwenden Sie die Publisher.Builder Klasse, um ein Publisher-Objekt zu instanziieren. Geben Sie den Android-Anwendungskontext für den Publisher ein:
Fügen Sie ein Listener-Objekt für grundlegende verlagsbezogene Ereignisse hinzu, indem Sie die setPublisherListener(PublisherKit.PublisherListener listener) Methode des Publisher-Objekts:
Implementieren Sie die Methoden der Schnittstelle PublisherKit.PublisherListener in dem Objekt, das Sie als Ereignis-Listener-Objekt angeben. Diese Methoden werden aufgerufen, wenn verlagsbezogene Ereignisse auftreten.
Die getView() Methode des Publisher-Objekts gibt die Ansicht des von Ihnen veröffentlichten Videos zurück. Fügen Sie sie als Unteransicht eines android.view.ViewGroup-Objekts hinzu, um sie in der App anzuzeigen:
Übergeben Sie das Publisher-Objekt an die Session.publish() Methode, um einen Stream in einer Sitzung zu veröffentlichen.
Sie können andere Methoden des Publisher.Builder-Objekts aufrufen, um benutzerdefinierte Einstellungen für den Publisher zu definieren:
Beachten Sie, dass in Sitzungen, die den Vonage Video Media Router verwenden (Sitzungen mit dem Medienbetrieb Wenn der Medienmodus auf geroutet eingestellt ist, wird durch die Verringerung der Bildrate die vom Stream verwendete Bandbreite proportional reduziert. In Sitzungen, bei denen der Medienmodus auf "Relayed" eingestellt ist, wird die Bandbreite des Streams durch die Verringerung der Bildrate jedoch nicht verringert.
Verwendung eines benutzerdefinierten Video-Capturers
Sie können einen benutzerdefinierten Video-Capturer verwenden, um einen Stream mit einer benutzerdefinierten Videoquelle zu veröffentlichen. Sie können den benutzerdefinierten Video-Capturer auch verwenden, um einen Screen-Sharing-Stream zu veröffentlichen.
Sie können auch eine benutzerdefinierte Audioquelle für den veröffentlichten Stream verwenden - siehe Verwendung eines benutzerdefinierten Audiotreibers.
Verwenden Sie die OTPublisher Objekt, um einen Verlag zu erstellen. Die Website view des Objekts enthält die Ansicht des von Ihnen veröffentlichten Videos:
Implementieren Sie die Methoden des OTPublisherDelegate-Protokolls in dem Objekt, das Sie als Delegate-Objekt angeben. Diese Methoden werden aufgerufen, wenn verlagsbezogene Ereignisse auftreten.
Übergeben Sie das Publisher-Objekt an die OTSession publish(_:error:) Methode, um einen Stream in einer Sitzung zu veröffentlichen.
Sie können weitere Eigenschaften des OTPublisherSettings-Objekts festlegen, um benutzerdefinierte Einstellungen für den Publisher zu definieren:
Beachten Sie, dass in Sitzungen, die den Vonage Video Media Router verwenden (Sitzungen mit dem Medienbetrieb Wenn der Medienmodus auf geroutet eingestellt ist, wird durch die Verringerung der Bildrate die vom Stream verwendete Bandbreite proportional reduziert. In Sitzungen, bei denen der Medienmodus auf "Relayed" eingestellt ist, wird die Bandbreite des Streams durch die Verringerung der Bildrate jedoch nicht verringert.
Sie können einen benutzerdefinierten Video-Capturer verwenden, um einen Stream mit einer benutzerdefinierten Videoquelle zu veröffentlichen - siehe Verwendung eines benutzerdefinierten Video-Capturers. Sie können den benutzerdefinierten Video-Capturer auch verwenden, um einen Screen-Sharing-Stream zu veröffentlichen - siehe Bildschirmfreigabe.
Sie können auch eine benutzerdefinierte Audioquelle für den veröffentlichten Stream verwenden - siehe Verwendung eines benutzerdefinierten Audiotreibers.
Verwenden Sie die OTPublisher Objekt, um einen Verlag zu erstellen. Die Website view des Objekts enthält die Ansicht des von Ihnen veröffentlichten Videos:
Implementieren Sie die Methoden des OTPublisherDelegate-Protokolls in dem Objekt, das Sie als Delegate-Objekt angeben. Diese Methoden werden aufgerufen, wenn verlagsbezogene Ereignisse auftreten.
Übergeben Sie das Publisher-Objekt an die [OTSession publish:error] Methode, um einen Stream in einer Sitzung zu veröffentlichen.
Sie können weitere Eigenschaften des OTPublisherSettings-Objekts festlegen, um benutzerdefinierte Einstellungen für den Publisher zu definieren:
Beachten Sie, dass in Sitzungen, die den Vonage Video Media Router verwenden (Sitzungen mit dem Medienbetrieb Wenn der Medienmodus auf geroutet eingestellt ist, wird durch die Verringerung der Bildrate die vom Stream verwendete Bandbreite proportional reduziert. In Sitzungen, bei denen der Medienmodus auf "Relayed" eingestellt ist, wird die Bandbreite des Streams durch die Verringerung der Bildrate jedoch nicht verringert.
Sie können einen benutzerdefinierten Video-Capturer verwenden, um einen Stream mit einer benutzerdefinierten Videoquelle zu veröffentlichen - siehe Verwendung eines benutzerdefinierten Video-Capturers.
Sie können den benutzerdefinierten Video-Capturer auch verwenden, um einen Screen-Sharing-Stream zu veröffentlichen - siehe Bildschirmfreigabe.
Sie können auch eine benutzerdefinierte Audioquelle für den veröffentlichten Stream verwenden - siehe Verwendung eines benutzerdefinierten Audiotreibers.
Sie können einen einfachen Publisher erstellen, indem Sie die Publisher() Konstruktor und übergibt die Windows-Anwendungsinstanz:
Übergeben Sie das Publisher-Objekt an die Session.publish() Methode, um einen Stream in einer Sitzung zu veröffentlichen.
Standardmäßig verwendet der Publisher den Standard-Video-Capturer, der das Standardmikrofon und die Standardkamera des Systems als Audio- und Videoquelle für den veröffentlichten Stream verwendet. Dies wird durch den VideoCapturer im Vonage Video SDK definiert.
Sie können ein bestimmtes Video-Capturer-Objekt definieren, das der Herausgeber verwenden soll. Dieses Objekt nimmt Video von einer Videoquelle (z. B. einer Kamera) auf und verfügt über Einstellungen für das Video (z. B. Bildrate und Auflösung).
Sie können die VideoCapturer.EnumerateDevices() Methode zur Aufzählung der Videoaufnahmegeräte (Kameras) im System. Diese Methode gibt eine Liste von VideoDevice-Objekten zurück. Die Klasse VideoDevice enthält eine Reihe von CreateVideoCapturer() Methoden, um ein VideoCapturer-Objekt zu instanziieren, das das Videogerät verwendet:
VideoCapturer.CreateVideoCapturer(format)- Erstellt ein VideoCapturer-Objekt unter Verwendung der durch ein VideoFormat-Objekt definierten Einstellungen.VideoCapturer.CreateVideoCapturer(width, height, fps)- Erzeugt ein VideoCapturer-Objekt mit der Auflösung, die durch den ParameterwidthundheightParametern und mit der Bildrate, die durch denfpsParameter.VideoCapturer.CreateVideoCapturer(resolution, fps)- Erzeugt ein VideoCapturer-Objekt mit der Auflösung, die durch den Parameterresolutionund mit der Bildrate, die durch den ParameterfpsParameter. Die WebsiteOpenTok.VideoCapturer.Resolutionenum definiert Werte, die von derresolutionParameter:Low(320x240 Pixel),Medium(640x480 Pixel), undHigh(1280x720 Pixel), undHigh 1080p(1920x1080 Pixel).
Der Video-Capturer verwendet die Auflösung, die auf dem System unterstützt wird, das der von Ihnen angegebenen Auflösung am nächsten kommt.
Standardmäßig verwenden Publisher einen Standard-Video-Renderer für Windows Presentation Foundation, der durch die Klasse VideoRenderer im Vonage Video Windows SDK definiert ist. Sie können auch einen Renderer für das Video angeben, indem Sie eine Klasse erstellen, die die Schnittstelle IVideoRenderer implementiert. Sie können einen benutzerdefinierten Video-Renderer verwenden - siehe Verwendung eines benutzerdefinierten Video-Renderers.
Mit dem folgenden Code wird ein Publisher erstellt, der den Standard-Systemvideo-Capturer mit einer Auflösung von 720p verwendet (VideoCapturer.Resolution.High) und die Bildrate auf 30 Bilder pro Sekunde eingestellt:
Anmerkung: In Sitzungen, die den Vonage Video Media Router verwenden (Sitzungen mit dem Medienbetrieb Wenn der Medienmodus auf geroutet eingestellt ist, wird durch die Verringerung der Bildrate die vom Stream verwendete Bandbreite proportional reduziert. In Sitzungen, bei denen der Medienmodus auf "Relayed" eingestellt ist, wird die Bandbreite des Streams durch die Verringerung der Bildrate jedoch nicht verringert.
Sie übergeben weitere optionale Parameter der Publisher() Konstruktor, um benutzerdefinierte Einstellungen für den veröffentlichten Stream festzulegen:
name- Der Name des Herausgebervideos. DieStream.NameEigenschaft für einen von diesem Verlag veröffentlichten Stream auf diesen Wert gesetzt (auf allen Clients).hasAudioTrack- Ob eine Audiospur in den veröffentlichten Stream aufgenommen werden soll. Der Standard isttrue.hasVideoTrack- Ob eine Audiospur in den veröffentlichten Stream aufgenommen werden soll. Der Standard isttrue.stereo- Ob Stereo-Audio im veröffentlichten Stream aktiviert werden soll. Der Standard istfalse. Stellen Sie dies auftrueum Audio von einem Stereomikrofon zu veröffentlichen.
Sie können auch die vom Herausgeber verwendete Audioquelle ändern. Oder Sie können eine benutzerdefinierter Audiotreiber die von allen Verlegern und Abonnenten verwendet werden können.
Sie können einen benutzerdefinierten Video-Capturer verwenden, um einen Stream mit einer benutzerdefinierten Videoquelle zu veröffentlichen - siehe Verwendung eines benutzerdefinierten Video-Capturers.
Sie können den benutzerdefinierten Video-Capturer auch verwenden, um einen Screen-Sharing-Stream zu veröffentlichen - siehe Bildschirmfreigabe.
Anmerkung: Die OpenTok.Publisher Klasse und der OpenTok.VideoCapturer implementieren die System.IDisposable Schnittstelle. Stellen Sie sicher, dass Sie die Dispose() Methode dieser Objekte, um ihre Ressourcen freizugeben, wenn Sie das Objekt nicht mehr benötigen (z. B. wenn der Publisher entfernt wird oder wenn die Anwendung oder das Fenster geschlossen wird).
Beginnen Sie mit der Erstellung einer Struktur vom Typ otc_publisher_callbacks:
Verwenden Sie die user_data Mitglied des otc_publisher_callbacks Struktur, um Daten festzulegen, auf die Sie in den Callback-Funktionen verweisen möchten. In diesem Beispiel setzen wir ihn auf einen Zeiger auf ein char-Array. Es könnte aber auch ein Zeiger auf eine Instanz eines anderen Typs sein, der sinnvolle Informationen enthält.
Die anderen Mitglieder der otc_publisher_callbacks Struktur sind jeweils Callback-Funktionen, die aufgerufen werden, wenn Ereignisse im Zusammenhang mit dem veröffentlichten Stream auftreten:
on_stream_created- Wird aufgerufen, wenn der Verleger mit dem Streaming in die Sitzung beginnt.on_render_frame- Wird jedes Mal aufgerufen, wenn der Herausgeber bereit ist, ein neues Videobild in den Stream zu rendern.on_stream_destroyed- Wird aufgerufen, wenn der Stream des Verlegers zerstört wird.on_error- Wird aufgerufen, wenn bei der Veröffentlichung des Streams ein Fehler auftritt.
Alle Rückrufe erfolgen nicht über die Anwendung oder den Hauptthread, sondern über einen internen Thread. Die Anwendung sollte den Rückruf so schnell wie möglich zurückgeben, um ein Blockieren des internen Threads zu vermeiden.
Siehe otc_publisher_callbacks in der OpenTok Linux SDK Referenz für Details zu den einzelnen Callback-Funktionen.
Rufen Sie die otc_publisher_new() zur Erstellung einer otc_publisher Struktur, die den OpenTok-Verlag darstellt:
Die otc_publisher_new() Methode nimmt drei Argumente entgegen:
name- Ein Name (optional), der den Herausgeber des Streams identifiziert.capturer- Verwenden Sie diesen Parameter, wenn Sie einen benutzerdefinierten Video-Capturer bereitstellen möchten. Wenn er aufNULLverwendet der Herausgeber die Standard-Systemkamera als Videoquelle.
Siehe Verwendung eines benutzerdefinierten Video-Capturers um zu sehen, wie man einen benutzerdefinierten Video-Capturer implementiert.
callbacks- Dieotc_publisher_callbacksPublisher-Callback-Struktur, wie oben beschrieben.
Erstellen einer benutzerdefinierter Audiotreiber die von allen Verlegern und Abonnenten verwendet werden können.
Sie können einen benutzerdefinierten Video-Capturer verwenden, um einen Stream mit einer benutzerdefinierten Videoquelle zu veröffentlichen - siehe Verwendung eines benutzerdefinierten Video-Capturers.
Veröffentlichen eines Streams
Sobald Sie ein Publisher-Objekt und eine SitzungDer nächste Schritt ist die Übergabe an das Sitzungsobjekt, um das Streaming zu starten.
Um einen Stream zu veröffentlichen, fügen Sie eine OTPublisher-Komponente als untergeordnetes Element des OTSession-Objekts hinzu:
<OTSession
applicationId="your-application-id"
sessionId="the session ID"
token="the token">
<OTPublisher/>
</OTSession>
Der Publisher beginnt mit dem Streaming, wenn der Client eine Verbindung zur Sitzung herstellt. Das OTPublisher-Objekt sendet eine streamCreated Ereignis, wenn es mit dem Streaming zur Sitzung beginnt. Es sendet ein error Ereignis, wenn es ein error Veröffentlichung. Einstellen eventHandlers der OTPublisher-Komponente, und setzen Sie die streamCreated und error Eigenschaften dieses Objekts an Callback-Funktionen:
<OTPublisher
eventHandlers={{
streamCreated: () => {
console.log('The publisher started streaming.');
},
error: event => {
console.log('Publisher error:', event);
},
}}/>
Übergeben Sie das Publisher-Objekt an die publish() Methode eines Session-Objekts, um einen Stream in der Session zu veröffentlichen:
publisher = OT.initPublisher('replacementElementId');
session.publish(publisher, function(error) {
if (error) {
console.log(error);
} else {
console.log('Publishing a stream.');
}
});
Der zweite Parameter ist eine Abschlusshandlerfunktion, der ein Fehlerobjekt übergeben wird, wenn die Veröffentlichung fehlschlägt. Andernfalls wird die Beendigungshandlerfunktion aufgerufen, ohne dass ein Fehler übergeben wird.
Dieser Code geht davon aus, dass session ein Session-Objekt ist und dass der Client eine Verbindung zur Session aufgebaut hat. Für weitere Informationen, siehe Beitritt zu einer Sitzung.
Das Publish-Objekt sendet eine streamCreated Ereignis, wenn das Streaming in die Sitzung beginnt:
var publisher = OT.initPublisher();
session.publish(publisher, function(error) {
if (error) {
console.log(error);
} else {
console.log('Publishing a stream.');
}
});
publisher.on('streamCreated', function (event) {
console.log('The publisher started streaming.');
});
Das Publisher-Objekt hat eine element die auf das HTML-DOM-Element gesetzt wird, das sie enthält.
Sie können die maximale Bitrate für einen veröffentlichten Stream festlegen. Die Einstellung der Bitrate kann dazu beitragen, den Bandbreitenverbrauch zu reduzieren, wenn ein Benutzer über eine gebührenpflichtige Verbindung verbindet. Siehe diese Dokumentation.
Übergeben Sie das Publisher-Objekt an die publish(PublisherKit publisher) Methode eines Session-Objekts, um den Stream in der Session zu veröffentlichen:
Dieser Code geht davon aus, dass mSession ein Session-Objekt ist und dass der Client eine Verbindung zur Session aufgebaut hat. Für weitere Informationen, siehe Beitritt zu einer Sitzung.
Die PublisherKit.PublisherListener.onStreamCreated(PublisherKit publisher, Stream stream) Methode wird aufgerufen, wenn der Verleger mit dem Streaming in die Sitzung beginnt:
Sie können die maximale Bitrate für einen veröffentlichten Stream festlegen. Die Einstellung der Bitrate kann dazu beitragen, den Bandbreitenverbrauch zu reduzieren, wenn ein Benutzer über eine gebührenpflichtige Verbindung verbindet. Siehe diese Dokumentation.
Übergeben Sie das Publisher-Objekt an die OTSession publish(_:error:) Methode eines OTSession-Objekts, um den Stream in der Sitzung zu veröffentlichen:
Dieser Code geht davon aus, dass session ein Session-Objekt ist und dass der Client eine Verbindung zur Session aufgebaut hat. Für weitere Informationen, siehe Beitritt zu einer Sitzung.
Die OTPublisherDelegate publisher(_:streamCreated:) Nachricht wird gesendet, wenn der Verleger mit dem Streaming in die Sitzung beginnt.
Übergeben Sie das Publisher-Objekt an die [OTSession publish:error] Methode eines OTSession-Objekts, um den Stream in der Sitzung zu veröffentlichen:
Dieser Code geht davon aus, dass session ein Session-Objekt ist und dass der Client eine Verbindung zur Session aufgebaut hat. Für weitere Informationen, siehe Erstellen einer Sitzung.
Die [OTPublisherDelegate publisher:streamCreated:] Nachricht wird gesendet, wenn der Verleger mit dem Streaming in die Sitzung beginnt.
Sie können die maximale Bitrate für einen veröffentlichten Stream festlegen. Die Einstellung der Bitrate kann dazu beitragen, den Bandbreitenverbrauch zu reduzieren, wenn ein Benutzer über eine gebührenpflichtige Verbindung verbindet. Siehe diese Dokumentation.
Übergeben Sie das Publisher-Objekt an die Publish(publisher) Methode eines Session-Objekts, um den Stream in der Session zu veröffentlichen:
Dieser Code geht davon aus, dass session ist ein Session-Objekt, das publisher ein Publisher-Objekt ist und dass der Client eine Verbindung zur Sitzung hergestellt hat. Für weitere Informationen siehe Beitritt zu einer Sitzung.
Die Publisher sendet die StreamCreated Ereignis, wenn der Verleger mit dem Streaming in die Sitzung beginnt:
Sie können die maximale Bitrate für einen veröffentlichten Stream festlegen. Die Einstellung der Bitrate kann dazu beitragen, den Bandbreitenverbrauch zu reduzieren, wenn ein Benutzer über eine gebührenpflichtige Verbindung verbindet. Siehe diese Dokumentation.
Wenn die Anwendung eine Verbindung zu einer Sitzung herstellt, wird die on_connected() Callback-Funktion des otc_session_callbacks struct aufgerufen wird (siehe Beitritt zu einer Sitzung). Als Reaktion darauf können Sie die Funktion otc_session_publish() Funktion, um einen Stream in der OpenTok-Sitzung zu veröffentlichen:
Die otc_session_publish() nimmt zwei Argumente entgegen:
- Der Zeiger auf den
otc_sessionStruktur. - Die
otc_publisherStruktur.
Sie gibt zurück OTC_SUCCESS wenn er erfolgreich mit der Veröffentlichung eines Streams in der Sitzung beginnt. Oder es gibt einen Fehler zurück, und die otc_error Rückruf aufgerufen wird.
Sie können die maximale Bitrate für einen veröffentlichten Stream festlegen. Die Einstellung der Bitrate kann dazu beitragen, den Bandbreitenverbrauch zu reduzieren, wenn ein Benutzer über eine gebührenpflichtige Verbindung verbindet. Siehe diese Dokumentation.
Streaming eines Herausgebers stoppen
Kontrollieren Sie, wer veröffentlichen darf, und stoppen Sie bei Bedarf das Streaming eines Verlegers zu einer Sitzung.
Sie können das Streaming des Publishers in die Sitzung stoppen, indem Sie ihn aus der übergeordneten OTSession-Komponente entfernen (unmounten). Der folgende Code beendet beispielsweise die Veröffentlichung eines Streams nach 30 Sekunden:
import React, {Component} from 'react';
import {View} from 'react-native';
import {OTSession, OTPublisher} from 'opentok-react-native';
class App extends Component {
constructor(props) {
super(props);
this.apiKey = 'your-api-key';
this.sessionId = 'valid-session-id';
this.token = 'valid-token';
this.publisherOptions = {
publishCaptions: true,
publishVideo: true,
publishAudio: false,
};
this.state = {
publishing: true,
};
this.publisherEventHandlers = {
streamCreated: event => {
setTimeout(
function () {
console.log(10);
this.setState({publishing: false});
}.bind(this),
10000,
);
},
};
}
render() {
return (
<View>
<OTSession
applicationId={this.apiKey}
sessionId={this.sessionId}
token={this.token}
{this.state.publishing ? (
<OTPublisher
eventHandlers={this.publisherEventHandlers}
ref={instance => {
this.publisher = instance;
}}
/>
) : null}
</OTSession>
</View>
);
}
}
export default App;
Beachten Sie, dass Sie das Senden von Video- oder Audiodateien individuell beenden können (während Sie noch veröffentlichen).
Erkennen, wenn ein veröffentlichter Stream eine Sitzung verlässt
Das OTPublisher-Objekt sendet eine streamDestroyed Ereignis, wenn das Streaming in die Sitzung beendet wird:
<OTPublisher
eventHandlers={{
streamDestroyed: function() {
console.log('The publisher stopped streaming.');
},
}}
/>
Um einen Publisher zu stoppen, rufen Sie den unpublish() Methode des Session-Objekts:
session.unpublish(publisher);
Beachten Sie, dass Sie das Senden von Video- oder Audiodateien individuell beenden können (während Sie noch veröffentlichen).
Weitere Informationen finden Sie unter Einstellen von Audio und Video.
Erkennen, wenn ein veröffentlichter Stream eine Sitzung verlässt
Das Publisher-Objekt versendet eine streamDestroyed Ereignis, wenn das Streaming in die Sitzung beendet wird:
var publisher = OT.initPublisher();
session.publish(publisher);
publisher.on("streamDestroyed", function (event) {
console.log("The publisher stopped streaming. Reason: "
+ event.reason);
});
Die streamDestroyed Ereignis wird durch die Klasse StreamEvent definiert. Das Ereignis enthält eine reason die angibt, warum der Stream beendet wurde. Diese Gründe umfassen "clientDisconnected", "forceDisconnected", "forceUnpublished", oder "networkDisconnected". Für Einzelheiten siehe StreamEvent.
Standardmäßig, wenn ein Publisher die streamDestroyed Ereignis wird der Publisher zerstört und aus dem HTML-DOM entfernt. Sie können dieses Standardverhalten verhindern, indem Sie die preventDefault() Methode des StreamEvent-Objekts:
publisher.on("streamDestroyed", function (event) {
event.preventDefault();
console.log("The publisher stopped streaming.");
});
Sie können das Standardverhalten verhindern und den Publisher beibehalten, wenn Sie das Publisher-Objekt wiederverwenden möchten, um erneut in der Sitzung zu veröffentlichen.
Der Verlag versendet außerdem eine destroyed Ereignis, wenn das Objekt aus dem HTML-DOM entfernt wurde. Als Reaktion auf dieses Ereignis können Sie DOM-Elemente anpassen (oder entfernen), die sich auf den entfernten Verlag beziehen.
Um einen Publisher zu stoppen, rufen Sie den unpublish(PublisherKit publisher) Methode des Session-Objekts:
Die PublisherKit.PublisherListener.onStreamDestroyed(PublisherKit publisher, Stream stream) Methode wird aufgerufen, wenn der Verleger das Streaming in die Sitzung beendet:
Um einen Publisher zu stoppen, rufen Sie den OTSession unpublish(_:error:) Methode des OTSession-Objekts:
Die OTPublisherDelegate publisher(_:streamDestroyed:) Nachricht wird gesendet, wenn der Verleger das Streaming in die Sitzung beendet. Wenn diese Nachricht gesendet wird, entfernen Sie die Ansicht des Verlegers aus seiner Superview:
Um einen Publisher zu stoppen, rufen Sie den [OTSession unpublish:error:] Methode des OTSession-Objekts:
Die [OTPublisherDelegate publisher:streamDestroyed:] Nachricht wird gesendet, wenn der Verleger das Streaming in die Sitzung beendet. Wenn diese Nachricht gesendet wird, entfernen Sie die Ansicht des Verlegers aus seiner Superview:
Um einen Publisher zu stoppen, rufen Sie den Unpublish(publisher) Methode des Session-Objekts:
Die Publisher sendet die StreamCreated Ereignis, wenn der Verleger mit dem Streaming in die Sitzung beginnt:
Rufen Sie die otc_session_unpublish() Funktion, indem Sie die otc_session und otc_publisher strukturen:
Löschen eines Publishers (Bereinigung)
Sie können einen Publisher löschen, indem Sie seine destroy() Methode. Aufruf von destroy() löscht das Publisher-Objekt und entfernt es aus dem HTML-DOM:
publisher.destroy();