---
title: Seeking
---

There is no built-in method for seeking audio resources in discord.js. However external libraries such as `prism-media` can be used to tackle this issue.

## Seeking in a stream

To seek resource, you can create a new function with the following code:

```js
// Require necessary package
const prism = require('prism-media'); // [!code word:prism]

function createFFmpegStream(stream, seek) {
	let seekPosition = '0';
	if (seek) seekPosition = String(seek);
	const transcoder = new prism.FFmpeg({
		args: [
			'-analyzeduration',
			'0',
			'-loglevel',
			'0',
			'-f',
			's16le',
			'-ar',
			'48000',
			'-ac',
			'2',
			'-ss',
			seekPosition,
			'-ab',
			'320',
		],
	});
	const s16le = stream.pipe(transcoder);
	const opus = s16le.pipe(new prism.opus.Encoder({ rate: 48000, channels: 2, frameSize: 960 }));
	return opus;
}
```

This function takes two arguments: the audio stream and the desired seek position, expressed as duration within the duration of the full stream. It returns the seeked stream.

<Callout>
	You can find configuration options in the [prism media documentation](https://amishshah.github.io/prism-media/).
</Callout>

## Using seek with the audio player

```js
const { createAudioResource, createAudioPlayer } = require('@discordjs/voice');
const fs = require('fs');

const player = createAudioPlayer();
const normalAudioResource = createAudioResource('Your audio file path');

player.play(normalAudioResource);

// [!code word:createFFmpegStream]
const seekedAudioStream = createFFmpegStream(fs.createReadStream('Your audio file path'), 10); // Seek to 10s
const seekedAudioResource = createAudioResource(seekedAudioStream);

player.play(seekedAudioResource);
```
