Skip to main content
Version: 2.x.x

Custom Audio Sources - Flutter

For a high-quality streaming experience, fine-tuning audio tracks becomes essential—especially when delivering content to a broader live audience.

To enhance your live audio pipeline, we've introduced the capability to provide a custom audio track for a hosts's stream both before and during a live session.

Custom Audio Track​

This feature allows you to integrate advanced audio layers like background noise suppression, echo cancellation, and more—so your stream sounds polished and professional to every viewer.

How to Create a Custom Audio Track ?​

  • You can create a Audio Track using createMicrophoneAudioTrack() method of VideoSDK class.
  • This method can be used to create audio track using different encoding parameters and noise cancellation configuration.

Example​

CustomTrack? audioTrack = await VideoSDK.createMicrophoneAudioTrack(
encoderConfig: CustomAudioTrackConfig.high_quality);

Here are different configurations for customizing audio tracks based on specific use cases:

  • speech_standard : This config is optimised for normal voice communication.
  • high_quality : This config is used for obtaining RAW audio, allowing you to apply your noiseConfig.
  • music_standard : This config is optimised for communication scenarios, where the sharing of musical elements, such as songs or instrumental sounds, is crucial.

How to Setup Custom Audio Track ?​

You can plug in your custom audio track either before going live or dynamically while the session is ongoing.

  1. Setup during live stream initialization
  2. Setup dynamically using methods
1. Setup during live stream initialization​

If you are passing micEnabled: true in the createRoom and want to use custom tracks from start of the livestream, you can pass custom track in the createRoom as shown below.

CustomTrack? audioTrack = await VideoSDK.createMicrophoneAudioTrack(
encoderConfig: CustomAudioTrackConfig.high_quality);

Room room = VideoSDK.createRoom(
roomId: widget.livestreamId,
token: widget.token,
displayName: widget.displayName,
micEnabled: widget.micEnabled,
camEnabled: widget.camEnabled,
maxResolution: 'hd',
defaultCameraIndex: 1,
multiStream: false,

// Pass the custom track here
customMicrophoneAudioTrack: audioTrack, // custom audio track :: optional
notification: const NotificationInfo(
title: "Video SDK",
message: "Video SDK is sharing screen in the livestream",
icon: "notification_share", // drawable icon name
),
);

2. Setup dynamically using methods​

In order to switch tracks during the livestream, you have to pass the CustomTrack in the room.unmuteMic() method.

note

Make sure to call muteMic() before you create a new track as it may lead to unexpected behavior.

CustomTrack? audioTrack = await VideoSDK.createMicrophoneAudioTrack(
encoderConfig: CustomAudioTrackConfig.high_quality);

room.unmuteMic(customTrack);

API Reference​

The API references for all the methods and events utilized in this guide are provided below.

Got a Question? Ask us on discord