2012-04-29 15 views
6

Estoy usando la biblioteca NAudio en una aplicación C#. Al tratar de buscar un archivo de audio mp3 en la posición que quiero, descubrí que no entendía cómo hacerlo.NAudio: búsqueda y navegación para jugar desde la posición especificada

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

Y ... Se jugó a partir casi desde el principio, pero no desde el 16o segundo. También encontré una solución que creía verdadera:

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

Parece que está más cerca de la verdad. ¿Mi resolución es cierta o no? Si no, ¿qué debería hacer?

Respuesta

7

Puede configurar Position directamente en WaveStream, que debe convertirse en un desplazamiento de bytes, así que sí, multiplicando los bytes promedio por segundo por el número de segundos lo llevará al lugar correcto (al menos con PCM WAV normal) archivos). WaveStream también tiene una propiedad de ayuda llamada CurrentTime que le permite usar un TimeSpan y hace el mismo cálculo por usted.

6

Si alguien todavía tiene este problema y no puede resolverlo. Entonces aquí hay un ejemplo:

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

¡Eres simplemente increíble! –

+0

Muchas gracias, ¡esto realmente me ayudó! –

Cuestiones relacionadas