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));