Audio- und Videoeinstellungen anpassen — Linux
Sie können Audio- und Videoeinstellungen für veröffentlicht und abonniert Streams:
- Nur Audio oder Video veröffentlichen
- Veröffentlichung in einer reinen Sprachsitzung
- Verwendung eines benutzerdefinierten Video-Capturers
- Spiegelung der lokalen Wiedergabe eines Videos eines Anbieters
- Verwendung eines benutzerdefinierten Audiotreibers
- Einstellen der Lautstärke für einen Teilnehmer
- Nur Audio- oder Videoabonnements
- Erkennen, ob ein Stream Audio oder Video enthält
- Optimierung der Audioqualität
- Einstellung der Präferenz für die Videoqualitätsreduzierung durch den Herausgeber
Nur Audio oder Video veröffentlichen
Sie können Audio und Video ein- oder ausschalten, indem Sie die otc_publisher_set_publish_audio() und otc_publisher_set_publish_video() Funktionen, wobei OTC_FALSE oder OTC_FALSE als die publish_audio und publish_audio Parameter. Der folgende Code schaltet beispielsweise den Ton aus:
otc_publisher_set_publish_audio(publisher, OTC_FALSE);
Veröffentlichung in einer reinen Sprachsitzung
Zum Einrichten einer Reine Sprachausgabe Sitzung, instanziieren Sie eine otc_publisher_settings Struktur, rufe die otc_publisher_settings_set_video_track() Funktion, wobei OTC_FALSE als die enabled Parameter. Verwenden Sie anschließend den otc_publisher_new_with_settings() Funktion zum Erstellen. Der folgende Code erstellt beispielsweise einen Publisher für eine reine Sprachsitzung:
otc_publisher_settings publisher_settings = otc_publisher_settings_new();
otc_publisher_settings_set_video_track(publisher_settings, OTC_FALSE);
otc_publisher_callbacks publisher_callbacks = {0};
// Set callbacks for the publisher. Then:
otc_publisher publisher = otc_publisher_new_with_settings(publisher_callbacks, publisher_settings);
Verwendung eines benutzerdefinierten Video-Capturers
Die otc_publisher_new() Die Funktion enthält eine capturer Parameter. Wenn Sie diesen auf NULL, verwendet das SDK die Standardkamera des Systems als Quelle für den veröffentlichten Videostream. Sie können jedoch einen benutzerdefinierten Video-Capturer für den Publisher verwenden, indem Sie einen otc_video_capturer_callbacks struct und diese als capturer Parameter des otc_publisher_new() Funktion. Die Website otc_video_capturer_callbacks Die Struktur enthält Funktionszeiger auf Callback-Funktionen, die bei Ereignissen im Zusammenhang mit dem Publisher-Video aufgerufen werden, beispielsweise wenn der Video-Capturer ein neues Videobild benötigt.
Ein Beispiel finden Sie im Beispiel „Custom Video Capturer“ der vonage-linux-sdk-beispiele Repo.
Spiegelung der lokalen Wiedergabe eines Videos eines Anbieters
Standardmäßig spiegelt der lokale Renderer für veröffentlichte Videos das Video. Sie können den mirror_on_local_render Eigenschaft der otc_video_capturer_settings Instanz, die durch den Aufruf der get_capture_settings(capturer, settings) Funktion. Setzen Sie sie auf true um das Video im lokalen Renderer des Herausgebers zu spiegeln. Setzen Sie ihn auf false dass sie nicht gespiegelt wird.
Diese Einstellung wirkt sich nur auf das gerenderte Video in der Client-Anwendung des Herausgebers aus. Sie hat keine Auswirkungen auf das Video in abonnierten Clients.
Verwendung eines benutzerdefinierten Audiotreibers
Sie können ein benutzerdefiniertes Audiogerät festlegen, um alle Publisher im Client mit Audio zu versorgen und den gemischten Audiostream aus allen Streams zu verarbeiten, die der Client abonniert hat.
Ein benutzerdefiniertes Audiogerät wird durch ein otc_audio_device Struktur. Und ein otc_audio_device_callbacks Die Struktur enthält Funktionszeiger auf Funktionen, die als audiobezogene Callbacks dienen, die vom OpenTok Linux SDK aufgerufen werden.
Ein Beispiel finden Sie im Beispiel „Custom Audio Device“ in der vonage-linux-sdk-beispiele Repo.
Einstellen der Lautstärke für einen Teilnehmer
Sie können die Lautstärke für jeden Teilnehmer individuell einstellen, indem Sie die Funktion otc_subscriber_set_audio_volume() Funktion.
Nur Audio- oder Videoabonnements
Standardmäßig wird ein Abonnent so initialisiert, dass er Audio- und Videodaten abonniert, sofern diese verfügbar sind. Sie können Audio ein- oder ausschalten, indem Sie die Funktion otc_subscriber_set_subscribe_to_audio(otc_subscriber *subscriber, otc_bool subscribe_to_audio) :
// audio off:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_FALSE);
// audio on:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_TRUE);
Sie können das Video ein- oder ausschalten, indem Sie die otc_subscriber_set_subscribe_to_video(otc_subscriber *subscriber, otc_bool subscribe_to_video) :
// video off:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_FALSE);
// video on:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_TRUE);
Erkennen, ob ein Stream Audio oder Video enthält
Sie können die otc_stream_has_audio() und otc_stream_has_audio() Mitgliedsfunktionen einer otc_stream Instanz, um zu sehen, ob es Audio oder Video hat.
Optimierung der Audioqualität
Zur Feinabstimmung der Audioqualität für einen Publisher-Stream können die folgenden Methoden verwendet werden:
Audio-Bitrate
otc_publisher_set_max_audio_bitrate(otc_publisher* publisher, uint32_t bitrate);
Die gewünschte Bitrate für das veröffentlichte Audio in Bits pro Sekunde. Der unterstützte Wertebereich liegt zwischen 6.000 und 510.000. (Ungültige Werte werden ignoriert.) Legen Sie diesen Wert fest, um Audio in hoher Qualität zu ermöglichen (oder um die Bandbreitennutzung mit Audio geringerer Qualität zu reduzieren). Wenn Sie diese Option nicht festlegen, weist OpenTok automatisch eine Audio-Bitrate für den Stream zu.
Die folgenden Einstellungen sind empfehlenswert:
- 8.000 - 12.000 für Schmalbandsprache (NB)
- 16.000 - 20.000 für Breitbandsprache (WB)
- 28.000 - 40.000 für Full-Band (FB) Sprache
- 48.000 - 64.000 für Vollbandmusik (FB)
Audioverarbeitung deaktivieren
otc_publisher_settings_set_disable_audio_processing (otc_publisher_settings* settings, otc_bool disabled);
Legt fest, ob die Echounterdrückung, die automatische Verstärkungsregelung und die Rauschunterdrückung für die veröffentlichten Audiodaten deaktiviert werden sollen. Sie können diese Option auf true bei der Veröffentlichung von hochwertigem Audio. Der Standardwert ist false.
Automatische Verstärkungsregelung
otc_publisher_settings_set_auto_gain_control(otc_publisher_settings* settings, otc_bool enabled);
Legt fest, ob die automatische Verstärkungsregelung für die veröffentlichten Audiodaten aktiviert werden soll. Sie können diese Option auf false bei der Veröffentlichung von hochwertigem Audio. Der Standardwert ist true. Diese Einstellung wird ignoriert, wenn Sie die Audioverarbeitung deaktivieren.
Echounterdrückung
otc_publisher_settings_set_echo_cancellation(otc_publisher_settings* settings, otc_bool enabled);
Ob die Echounterdrückung für den veröffentlichten Ton aktiviert werden soll. Sie können diese Option auf false bei der Veröffentlichung von hochwertigem Audio. Der Standardwert ist true. Diese Einstellung wird ignoriert, wenn Sie die Audioverarbeitung deaktivieren.
Rauschunterdrückung
otc_publisher_settings_set_noise_suppression(otc_publisher_settings* settings, otc_bool enabled);
Gibt an, ob die Rauschunterdrückung für das veröffentlichte Audio aktiviert werden soll. Sie können diese Option auf false bei der Veröffentlichung von hochwertigem Audio. Der Standardwert ist true. Diese Einstellung wird ignoriert, wenn Sie die Audioverarbeitung deaktivieren.
Stereo
otc_publisher_settings_set_stereo(otc_publisher_settings* settings, otc_bool enabled);
Ob Stereo-Audio veröffentlicht werden soll. Der Standardwert ist false.
Einstellung der Präferenz für die Videoqualitätsreduzierung durch den Herausgeber
Wenn die Bandbreite oder die CPU begrenzt sind, kann die Video-Engine die Bildrate und/oder die Auflösung des Herausgebervideos reduzieren, um sich an die Einschränkungen anzupassen.
Die Degradierungspräferenz ist eine Konfigurationseinstellung, mit der sich dieses Verhalten anpassen lässt.
Die Entwickler sind für die Definition und Anwendung von Degradationspräferenzen entsprechend ihrem Anwendungsfall und ihren Anforderungen verantwortlich.
Es handelt sich um eine Voreinstellung, d. h. die Video-Engine versucht, die gewählte Voreinstellung zu befolgen, aber es gibt keine Garantie für das Ergebnis.
Diese Einstellung kann sich anders verhalten, wenn Sie skalierbares VideoDie Video-Engine kann beschließen, Ebenen zu entfernen, anstatt die Auflösung zu verringern.
Hinweis auf den Inhalt und Degradationspräferenz dienen unterschiedlichen, aber verwandten Zwecken: Der Inhaltshinweis beschreibt die Art des zu übertragenden Inhalts, während die Degradationspräferenz die Codierungsstrategie steuert. Wenn Sie einen Inhaltshinweis festlegen, bestimmt die Video-Engine automatisch die entsprechende Degradierungspräferenz (z. B. wird bei "Text" automatisch die Auflösung beibehalten). Eine explizit festgelegte Degradationspräferenz setzt diese automatische Auswahl außer Kraft.
Sie können diesen Wert mit einer der bereitgestellten otc_degradation_preference Werte:
Nicht festgelegt
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_NOT_SET);
Der Standardwert. Die Video-Engine legt die optimale Einstellung für die Qualitätsreduzierung fest.
Bildrate und Auflösung beibehalten
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_FRAMERATE_AND_RESOLUTION);
Die Video-Engine versucht, die Bildrate konstant zu halten und die Auflösung nicht zu verringern.
Bildrate beibehalten
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_FRAMERATE);
Die Video-Engine versucht, die Bildrate konstant zu halten, kann jedoch bei Bedarf die Auflösung verringern.
Auflösung beibehalten
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_RESOLUTION);
Die Video-Engine verringert die Auflösung nicht, kann aber bei Bedarf die Bildrate reduzieren.
Ausgewogen
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_BALANCED);
Die Video-Engine versucht, bei Bedarf ein Gleichgewicht zwischen der Verringerung der Auflösung und der Bildrate herzustellen.