Mejorar player MP3

28/02/2010 - 13:43 por ByB | Informe spam
Hola,

En Internet encontré una clase que permite leer ficheros MP3 con C#,
pero necesitaria que esta clase me pueda indicar con un boolean (por
ejemplo) si un MP3 esta siendo leido por el Player o no, y no veo bién
como hacerlo.


Gracias por su ayuda.

Aqui esta el codigo :


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace MyNamespace
{
public class Player
{
private string _command;
private bool isOpen;
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand,
StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);

public Player()
{

}
public void Close()
{
_command = "close MediaFile";
mciSendString(_command, null, 0, IntPtr.Zero);
isOpen = false;
}

public void Open(string sFileName)
{
_command = "open \"" + sFileName + "\" type mpegvideo alias
MediaFile";
mciSendString(_command, null, 0, IntPtr.Zero);
isOpen = true;
}

public void Play(bool loop)
{
if (isOpen)
{
_command = "play MediaFile";
if (loop)
_command += " REPEAT";
mciSendString(_command, null, 0, IntPtr.Zero);
}
}
}
}

La forme des pyramides d'Egypte, nous apprend que dès la plus haute
antiquité,
les hommes avaient tendance à en faire de moins en moins.
- Anonyme -

Preguntas similare

Leer las respuestas

#1 hernan
28/02/2010 - 14:31 | Informe spam
In article <4b8a64e9$0$17889$, wrote:
Hola,

En Internet encontré una clase que permite leer ficheros MP3 con C#,
pero necesitaria que esta clase me pueda indicar con un boolean (por
ejemplo) si un MP3 esta siendo leido por el Player o no, y no veo bién
como hacerlo.


Gracias por su ayuda.




¿"siendo leido"?

Cuando haces el play, mciSendString() retornará sin error y sabrás que el
play está en marcha. Si al play le agregas un notify "play mediafile
notify" y agregas el handle de una ventana como el último argumento de la
función, en el wndproc() de esa ventana podrás capturar el MM_MCINOTIFY
con la indicación de que el play ha terminado (entre otros).

Si "siendo leido" significa eso mismo, bueno, mci usa una biblioteca de
e/s medio pascaloide que te deja introducir tu propio driveo del archivo
(mmioInstallIOProc / MMIOProc), así que podrías establecer exáctamente
cuándo abres, cuand cierras y cuando lees el archivo, porque deberás
hacerlo tú mismo. No creo que hables de esto...
Respuesta Responder a este mensaje
#2 ByB
28/02/2010 - 14:59 | Informe spam
Hernán a couché sur son écran :
In article <4b8a64e9$0$17889$,
wrote:
Hola,

En Internet encontré una clase que permite leer ficheros MP3 con C#,
pero necesitaria que esta clase me pueda indicar con un boolean (por
ejemplo) si un MP3 esta siendo leido por el Player o no, y no veo bién
como hacerlo.


Gracias por su ayuda.




¿"siendo leido"?

Cuando haces el play, mciSendString() retornará sin error y sabrás que el
play está en marcha. Si al play le agregas un notify "play mediafile
notify" y agregas el handle de una ventana como el último argumento de la
función, en el wndproc() de esa ventana podrás capturar el MM_MCINOTIFY
con la indicación de que el play ha terminado (entre otros).

Si "siendo leido" significa eso mismo, bueno, mci usa una biblioteca de
e/s medio pascaloide que te deja introducir tu propio driveo del archivo
(mmioInstallIOProc / MMIOProc), así que podrías establecer exáctamente
cuándo abres, cuand cierras y cuando lees el archivo, porque deberás
hacerlo tú mismo. No creo que hables de esto...



Gracias por la respuesta rapida.
Lo que to quiero hacer es saber cuando un fichero MP3 a sido escuchado
enteramente, o sea como cuando se termina una cancion, en un leedor de
CD audio. Porque cuando la cancion (el fichero MP3) se termina, yo voy
a tener que mandar otro fichero al Player.



Quand j'entends discourir des cons au restaurant, je suis affligé,
mais je me console en songeant qu'ils pourraient être à ma table.
- Frédéric Dard -
Respuesta Responder a este mensaje
#3 hernan
28/02/2010 - 15:17 | Informe spam
In article <4b8a76da$0$17856$, wrote:

Gracias por la respuesta rapida.
Lo que to quiero hacer es saber cuando un fichero MP3 a sido escuchado
enteramente, o sea como cuando se termina una cancion, en un leedor de
CD audio. Porque cuando la cancion (el fichero MP3) se termina, yo voy
a tener que mandar otro fichero al Player.




Ok, agregas la palabra Notify al string command. Y agregas el handle de la
ventana donde quieres recibir la notificación, como el cuarto argumento de
mciSendString().

Entonces haces un override del wndproc() de la ventana y allí espereas la
notificación del final. Ese es el mecanismo de notificación del mci.

Si te cabe, en lugar de un notify puedes hacer un wait. Si agregas este
comando, la función mciSendString no regresa hasta que el play haya
terminado.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida