Type Function Library audio.* Return value Boolean Revision 2017.3060 Keywords audio, seek, position See also audio.rewind()
Seeks to a time position on either an active channel or directly on the audio handle.
This function returns true
on success or false
if otherwise.
There are subtle behavior differences depending on whether you used audio.loadSound() or audio.loadStream() on what you are trying to seek.
Audio loaded with audio.loadSound() may only seek using the channel parameter. You may not seek using the audioHandle. This is because audio.loadSound() is optimized to share the audio data so you can play back multiple instances of the sound simultaneously (at different positions). Seeking the underlying data complicates this optimization.
In contrast, audio loaded with audio.loadStream() cannot be shared (you would load multiple instances of the same file if you needed multiple, simultaneous playback). So seeking the data does not cause a conflict. So generally you are expected to seek using the audioHandle parameter for audio loaded with audio.loadStream(). But if you seek streamed data using the channel parameter, it will automatically seek as if you used the audioHandle parameter. So you are allowed to specify either parameter safely.
Also note that for files loaded with audio.loadStream() and are currently playing, you may not hear the audio immediate update until after the current buffer finishes playing. If you want seemingly instantaneous seeking, you should stop the playback first using audio.stop(), seek, then start playing.
audio.seek( time [, audioHandle ] [, options ] )
Number. The time in milliseconds within the audio handle you want to seek to.
Object. The audio handle of the data you want to seek. This should only be used for audio loaded with audio.loadStream(). Do not use the options.channel
parameter in the same call.
Table. Table that supports a single key, channel
, which is the channel you want the seek operation to apply to. This is best for audio loaded with audio.loadSound(). Do not use the audioHandle
parameter in the same call.
audio.seek( 3000 ) -- seek all active channels to 3 seconds audio.seek( 4000, backgroundMusic ) -- seek the audio handle to 4 seconds audio.seek( 5000, { channel=1 } ) -- seek channel 1 to 5 seconds