2012-04-29 21 views
6

Używam biblioteki NAudio w aplikacji C#. Próbując znaleźć plik audio mp3 na pozycji, którą chcę, stwierdziłem, że nie wymyśliłem, jak to zrobić.Poszukiwanie i nawigacja do odtwarzania z określonej pozycji

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

I ... Grał od prawie początku, ale nie od 16 septymy. Znalazłem także rozwiązanie, które uważałem za prawdziwe:

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

Wygląda na to, że jest bliżej prawdy. Czy moje rozwiązanie jest prawdziwe, czy nie? Jeśli nie, to co powinienem zrobić?

Odpowiedz

7

Możesz ustawić bezpośrednio na WaveStream, który musi zostać przekonwertowany na przesunięcie bajtowe - więc tak, pomnożenie średniej bajtu na sekundę przez liczbę sekund doprowadzi Cię do właściwego miejsca (przynajmniej przy zwykłym PCM WAV akta). WaveStream ma również właściwość helpera o nazwie CurrentTime, która umożliwia korzystanie z TimeSpan i wykonuje te same obliczenia dla ciebie.

6

Jeśli ktoś nadal ma ten problem i nie może go rozwiązać. Oto przykład:

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

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

Jesteś po prostu niesamowity !!! –

+0

Wielkie dzięki, to naprawdę mi pomogło! –

Powiązane problemy