NAudio - поиск и навигация для воспроизведения с указанной позиции

Я использую библиотеку NAudio в приложении c#. Я пытаюсь найти аудио (*.mp3-файл) в нужную позицию. Однако я не знал, как это сделать.

//Play the file starting from 16th second
waveStream.Seek(16, SeekOrigin.Begin);

и ... Он играл, начиная почти с самого начала, но не с 16-й секунды. Я также нашел решение, которое считал истинным:

waveStream.Seek(waveStream.WaveFormat.AverageBytesPerSecond * 16, SeekOrigin.Begin);

Кажется, это ближе истине. Правда мое решение или нет? Если нет, то что мне делать?

2 ответов


вы можете установить Position на WaveStream, который должен быть преобразован в смещение байта-так что да, умножение средних байтов в секунду на количество секунд приведет вас в нужное место (по крайней мере, с обычными файлами PCM WAV). WaveStream также имеет вспомогательное свойство с именем CurrentTime позволяет использовать TimeSpan и он делает тот же расчет для вас.


Если кто-то все еще имеет эту проблему и не может понять это. Тогда вот пример:

myWaveStream.CurrentTime = myWaveStream.CurrentTime.Add(new TimeSpan(0, hours, minutes, seconds, milliseconds));

myWaveStream.CurrentTime = myWaveStream.CurrentTime.Subtract(new TimeSpan(0, hours, minutes, seconds, milliseconds));