Moderación — macOS

Cuando conectarse a una sesión Con un token que incluya privilegios de moderador, puedes obligar a otros clientes a desconectarse de una sesión o silenciar su audio:

Comprobación de los privilegios de moderación

Una vez que te hayas conectado a una sesión, puedes comprobar si el cliente tiene permisos de moderador llamando a la función otc_session_get_capabilities() función que recibe como parámetro la instancia otc_session. Esta función devuelve una instancia de otc_session_capabilities. Comprueba el valor de force_disconnect o force_mute miembro de la instancia `otc_session_capabilities`:

if (otc_session_get_capabilities(session).force_disconnect) {
  // The client can force disconnect. See the next section.
} else {
  // The client cannot force disconnect.
}
if (otc_session_get_capabilities(session).force_mute) {
  // The client can force mute. See the next section.
} else {
  // The client cannot force mute.
}

Forzar la desconexión de un cliente

Los moderadores pueden obligar a cualquier cliente a desconectarse de la sesión. Para obligar a un cliente a desconectarse, llama a la función otc_session_force_disconnect() función, pasando un puntero a la instancia otc_session y un puntero a la instancia otc_connection que se va a desconectar. Esta función admite los siguientes parámetros:

  • session - Un puntero a la instancia otc_session.
  • connection — Un puntero a la instancia `otc_connection` que se va a desconectar.

La función devuelve una instancia de `otc_status` que indica si se ha producido un error o si la operación se ha realizado correctamente.

success = otc_session_force_disconnect(session, connection);
if (success != OTC_SUCCESS) {
  printf("Could not force disconnect successfully.");
}

Puede obtener referencias a otc_connection casos en los que el on_connection_created() función de devolución de llamada de la otc_session_callbacks se invoca la instancia. La función de llamada incluye un puntero a la otc_connection que representa una conexión. Véase Detección de la conexión y desconexión de otros clientes. También puedes conseguir un otc_connection de cualquier instancia de flujo. Utilice la función otc_stream_get_connection() pasando en el otc_stream instancia.

Silenciar el audio de los flujos de una sesión

Los moderadores pueden obligar a todos los clientes o a un editor de un flujo específico a silenciar su audio publicado.

Para obligar a un editor de un flujo específico a silenciar su audio, llame a la función otc_session_force_mute_stream() función, pasando un puntero a la instancia de otc_session y la cadena de identificación del flujo que se desea silenciar. Esta función admite los siguientes parámetros:

  • session - Un puntero a la instancia otc_session.
  • stream_id_to_mute — Un puntero a la cadena de identificación de la transmisión que se va a silenciar.

La función devuelve una instancia de `otc_status` que indica si se ha producido un error o si la operación se ha realizado correctamente.

success = otc_session_force_mute_stream(session, stream_id);
if (success != OTC_SUCCESS) {
  printf("Could not force mute successfully.");
}

Los moderadores también pueden forzar que todas las transmisiones (excepto un conjunto opcional de ellas) de una sesión silencien el audio publicado. Llama a la función otc_session_force_mute_all() función. Esta función toma los siguientes parámetros:

  • session - Un puntero a la instancia otc_session.
  • excluded_streams_ids - Un puntero a una matriz de IDs de flujos que desea excluir del silenciamiento. Si este parámetro se establece en nullptr, se silenciarán todos los flujos (incluidos los publicados por el cliente local).
  • excluded_streams_len — La longitud de la matriz de flujos excluidos.

La función devuelve una instancia de `otc_status` que indica si se ha producido un error o si la operación se ha realizado correctamente:

success = otc_session_force_mute_all(session, streams, stream_count);
if (success != OTC_SUCCESS) {
  printf("Could not force mute successfully.");
}

Una retransmisión publicada por el moderador en la que se hace referencia al otc_session_force_mute_all() se silencia junto con otras secuencias de la sesión, a menos que añadas la secuencia (o secuencias) del moderador a la matriz de secuencias excluidas.

Si el excluded_streams_len se establece en 0, todas las secuencias de la sesión (incluidas las del moderador) dejarán de publicar audio.

success = otc_session_force_mute_all(session, nullptr, 0);
if (success != OTC_SUCCESS) {
  printf("Could not force mute successfully.");
}

Además, cualquier flujo que se publique después de la llamada a la función otc_session_force_mute_all() se publican con el audio silenciado. Puede eliminar el estado de silencio de una sesión llamando a la función otc_session_disable_force_mute(otc_session *session)() función

success = otc_session_disable_force_mute(session);
  if (success != OTC_SUCCESS) {
    printf("Could not force mute successfully.");
  }

Después de llamar a la otc_session_disable_force_mute() A partir de ahora, las nuevas retransmisiones publicadas en la sesión ya no tendrán el audio silenciado.

Puede obtener referencias a otc_stream casos en los que el on_stream_received() función de devolución de llamada de la otc_session_callbacks se invoca la instancia. La función de llamada incluye un puntero a la otc_stream que representa un flujo. Llame a la función otc_stream_get_id() (pasando el puntero a un otc_stream ) para obtener el ID del flujo. Véase Detección de flujos en una sesión. También puedes conseguir un otc_stream que representa el flujo de un editor llamando a la función otc_publisher_get_stream() pasando la función otc_publisher instancia. También puede obtener un otc_stream que representa el flujo de un abonado llamando a la función otc_subscriber_get_stream() pasando la función otc_subscriber instancia.

Cuando el flujo se silencia como resultado de una de estas funciones (o de un forzar llamada a flujo mudo en otro cliente SDK), el on_mute_forced() función de devolución de llamada de la otc_publisher_callbacks en cada cliente que publica un flujo silenciado.

Del mismo modo, en respuesta a una llamada al otc_session_force_mute_all() (o a una función Forzar el silencio de todas las llamadas en otro Client SDK), el on_mute_forced() función de devolución de llamada de la otc_session_callbacks struct en cada cliente conectado a la sesión. y el active propiedad del otc_on_mute_forced_info que se pasa a la función se establece en true.

Y en respuesta a una llamada a la otc_session_disable_force_mute() (o a una función desactivar la llamada forzada al silencio en otro cliente SDK), el on_mute_forced() función de devolución de llamada de la otc_publisher_callbacks La estructura se invoca en cada cliente conectado a la sesión, y la active propiedad del otc_on_mute_forced_info La estructura pasada en «set» a false.