Broadcast audio from a file to all connected channels.
Read time 2 minutesLast updated 20 hours ago
Note
There is a known issue with the Vivox SDK in which the local playback of the injected audio only occurs if the file also has the same sample rate as the negotiated audio codec. Other players always hear the file correctly, regardless of the sample rate. For Windows, this usually is 48kHz.
Audio injection allows you to broadcast audio from a file to all connected sessions in a single session group. Injected audio is treated like a second capture device you are speaking into. This means that muting or disconnecting your input device does not stop others from hearing the file audio. However, muting yourself in a channel, stopping transmission to a channel, or disconnecting a channel's media stream does stop others from hearing the file audio. Because the played file is treated as speech, it will beheard by anyone that would typically hear the user. It also triggers speaking indicators and VU meters like speech does, and is heard by participants in accordance with the player's position and orientation in a 3D channel, or when in a 2D channel, from anywhere on the map.Use cases for this feature include a player selecting pre-scripted audio clips in their character's voice saying things like "Enemy spotted!" or "Need healing!" to signal their situation, which is especially useful when the player does not have a microphone. Depending on your application, it might also be appropriate to let the user play music into the channel for everyone to listen to. When the file being injected ends, the
vx_evt_media_completion
event will trigger, you can use it to loop an audio track when complete or move to the next track in a playlist.You can broadcast only one file at a time. Successfully completed
vx_req_sessiongroup_control_audio_injection
requests with a "start" control type will play the specified file from the beginning only if no file is already playing; a "restart" control type always begins playing the specified file from the beginning and replaces any file that was previously playing. You can stop file audio from playing at any time by making the request with a "stop" control type. Note that injecting file audio does not replace or otherwise prevent the user from speaking into their capture device and being heard as normal; it is considered to be an additional audio source.The file also plays locally for the user while it is being transmitted to others to simulate the experience of file injection as a second spoken audio source. This means that a user playing a file into a non-positional or a positional channel hears the file slightly earlier than other participants, just like their own voice when speaking. The file plays with an echo in an echo channel, just like your own voice.
Warning
Audio files broadcast with this feature must have a .wav extension and contain single channel, 16-bit PCM audio. Otherwise, the
vx_resp_sessiongroup_control_audio_injection
response returns VxErrorInvalidFormat, and the file does not play.