2010-04-07 16 views
5

Tengo una lista de reproducción cargada en mi instancia de WMP, y quiero que se repita una sola canción. Todo lo que he buscado en Google hasta ahora me dice que haga esto:Repetir una sola canción en una lista de reproducción

private AxWindowsMediaPlayer wmp; 
wmp.settings.setMode("loop", true); 

Sin embargo, esto sólo parece tener toda la repetición de la Lista de Reproducción. El comportamiento que deseo es que, si habilito "repetir" cuando se reproduce la canción 5 en la lista de reproducción, entonces la canción 5 se repetirá automáticamente cuando termine (en lugar de continuar con la canción 6). La mayoría de los reproductores de MP3 para automóviles ya funcionan de esta manera; ¿Hay alguna manera agradable de hacerlo en mi programa C#, o tendré que diseñar una solución de "hackeo", como interceptar el evento que se dispara cuando se carga la siguiente canción?

Respuesta

0

¿No pudo manejar el evento PlayStateChange y detectar cuando se configuró el estado MediaEnded para la pista actual y simplemente rebobinarlo?

+0

Sí, en De hecho, esa era una de las formas en que pensaba hacerlo ... Solo quería asegurarme de que no había una forma "nativa" de manejar esto, antes de hacer un montón de código personalizado. –

1

Intenta crear un nuevo conjunto con una sola canción que quieras reproducir una y otra vez.

+0

Bueno, eso resolvería el problema, pero ¿qué sucede cuando quiero apagar la repetición? Necesitaría un mecanismo para volver a cargar la lista de reproducción original y volver a la pista y la posición exactas en las que estaba cuando apagué la "repetición". Sería más sencillo manejar el estado de reproducción y simplemente almacenar una bandera para saber si estoy repitiendo o no. –

0

La respuesta corta es que no WMP hace apoyo repetición de una sola pista!

Así que lo mejor que puede hacer es seguir la sugerencia de Machta y editar dinámicamente las listas de reproducción. Por ejemplo, cuando desee repetir una sola pista en una lista de reproducción edite la lista de reproducción, ya que solo tiene esa pista única y habilite el bucle. No te olvides de guardar en otro lugar tu lista de reproducción anterior. Cuando el usuario deshabilita el loop de canción, restaure su lista de reproducción anterior y configúrelo para que no se repita.

Desafortunadamente tienen el inconveniente de que la canción podría empezar desde el principio cuando se cambia la lista de reproducción: seguir la sugerencia de James y programar su cambio de lista de reproducción a MediaEnded estado.

Eso es lo mejor que puedo decirle.

1

Aquí está mi enfoque. Para mi lista de reproducción, en lugar de usar la lista de reproducción WMPLib, creé una lista genérica estática de tipo IWMPMedia. Esto me permitió agregar canciones a mi lista de reproducción sin ninguna dificultad en que la lista genérica realizaba un seguimiento de todas las canciones. Así que para repetir una canción, lo que hice fue Tomé el índice actual de la canción actual que juega en la lista de reproducción, y la puso igual a un entero, entonces hice algo en la línea de:

int repeatSongIndex = index;//in this case, our index is the current song playing 

player.URL = playlist[repeatSongIndex].sourceURL;//lets have player.URL point to the song object chosen to be repeated to its source url (the directory of the file). 
bool isRepeat = true;//to keep track of whether the repeat option is enabled or not. 
Cuestiones relacionadas