Manage stream state

Updated

Mute and unmute local and remote audio and video streams.

After you join a channel on a connection and start streaming, you can pause and resume sending local audio or video to a specific connection or to all connections. You can also pause and resume receiving audio or video from a specific remote user or all remote users.

This page shows you how to mute and unmute local and remote audio and video streams in your IoT SDK app.

Prerequisites

In order to follow this procedure you must have:

Send stream state

To pause or resume sending local audio or video, call agora_rtc_mute_local_audio or agora_rtc_mute_local_video with the connection ID and a mute flag (1 to mute, 0 to unmute):

// Pause sending audio to a specific connection
agora_rtc_mute_local_audio(conn_id, 1);
// Resume sending audio to a specific connection
agora_rtc_mute_local_audio(conn_id, 0);
// Pause sending video to a specific connection
agora_rtc_mute_local_video(conn_id, 1);
// Resume sending video to a specific connection
agora_rtc_mute_local_video(conn_id, 0);

Pass 0 as the connection ID to mute or unmute all of your connections at once, instead of a single connection.

Receive stream state

Handle mute notifications from remote users

When a remote user mutes or unmutes their audio or video stream, IoT SDK notifies you through the on_user_mute_audio and on_user_mute_video callbacks:

static void __on_user_mute_audio(connection_id_t conn_id, uint32_t uid, bool muted) {
    printf("[conn-%u] audio: uid=%u muted=%d\n", conn_id, uid, muted);
}

static void __on_user_mute_video(connection_id_t conn_id, uint32_t uid, bool muted) {
    printf("[conn-%u] video: uid=%u muted=%d\n", conn_id, uid, muted);
}

Pause and resume receiving remote streams

To pause or resume receiving a remote user's audio or video, call agora_rtc_mute_remote_audio or agora_rtc_mute_remote_video with the connection ID, the remote user's ID, and a mute flag:

const uint32_t remote_uid = 789;
// Pause receiving audio from a remote user on a specific connection
agora_rtc_mute_remote_audio(conn_id, remote_uid, 1);
// Resume receiving audio from a remote user on a specific connection
agora_rtc_mute_remote_audio(conn_id, remote_uid, 0);
// Pause receiving video from a remote user on a specific connection
agora_rtc_mute_remote_video(conn_id, remote_uid, 1);
// Resume receiving video from a remote user on a specific connection
agora_rtc_mute_remote_video(conn_id, remote_uid, 0);

Reference