PDA

Ver la Versión Completa : Parar reproducción de un video al cerrar el form


nesetru
01-02-2004, 21:17:35
Hola amigos.

He creado un formulario y en su evento 'onActivate' hago que mediante un componente TMediaPlayer se reproduzca un video.

Lo que pasa es que si cierro el formulario me da un error porque aún se está reproducciendo el video. Deduzco que lo que necesito es poner en el evento 'onClose' del formulario algo para que se pare la reproducción del video y así no salga mensaje de error al cerrar el formulario.

¿Alquien me podría ayudar?

roman
01-02-2004, 22:46:46
No tengo un video a la mano pero puse un mp3 y no pasó nada al cerrar el formulario estando el mp3 todavía reproduciéndose.

Sin embargo, viendo la documentación quizá te sirva poner en el evento OnClose del formulario:

MediaPlayer1.Wait := true;
MediaPlayer1.Stop;

Se supone que la primera línea hace que el método Stop no regrese hasta haberse completado de manera que en principio garantizas que el evento OnClose no terminará antes de que pare por completo el video.

// Saludos

Amilius
02-02-2004, 01:58:10
Basta un ".close"

MediaPlayer1.close;

Mejor si implementas una función "detener música" para llamarlo desde un "onclose"

Pero el problema con el media player es que se traba si ocurre un error que detiene el programa mientras el media player estaba reproduciendo.

nesetru
02-02-2004, 19:11:44
Efectivamente, si reproducimos un *.mp3 y cerramos el form antes de que éste finalice no pasa nada, es decir, no sale un mensaje de error.

Pero si estamos reproduciendo un *.avi y cerramos el Form antes de que éste finalice la aplicación saca un mensaje de error por pantalla.

¿Sabéis a qué se debe?, ¿Cómo puedo evitarlo?


Muchas gracias.,

Descendents
02-02-2004, 19:15:24
No se por que sucede, ¿pero no puedes controlarlo en el onclose del form?

nesetru
02-02-2004, 19:52:45
Pues no sé cómo puedo controlarlo en el evento 'onClose', así que ya me dirás.

Descendents
02-02-2004, 20:07:55
¿No existe ningun evento/propiedad para saber que el tmediapayer se esta reproduciendo?

Aunque te tengo que decir que a mi no me da el error que tu dices.Yo estoy ejecutando ahora mismo el clock.avi de windows y cierro el form a mitad del video y no me da error.

Uso delphi 7, quiza sea que tiene un bug.No se.

pero puedes poner el onclose del form

mediaplayer1.close; o
mediapalyer.wait := true,

No se la verdad que no dandome a mi el error dificil que te pueda ayudar.Porque lo que te digo al igual ya lo has intentado y tambien te da error.Aunque a mi no

Suerte Saludos

nesetru
03-02-2004, 14:56:40
Hola....

Uso Delphi 6.

Mientras reproduzco un *.avi cierro el form y me da el siguiente error:

Project 'Reproductor.exe' faculted with message:
'Application defined exception (code 0xcoooo8)

A ver si os sirve de ayuda.....

Amilius
05-02-2004, 02:22:53
Vaya vaya...

Eso empeora la mala imagen que tengo de los ".AVI" de la bugosoft(tm)(r) y todos sus mugres formatos de musica y video. Sólo ellos podrían convertir a un inocente archivo de video o música en un caballo de troya.

Siempre me bastó el:

MediaPlayer1.close;

En el "onclose" del formulario principal de la aplicación.

Bueno si no da, en el "OncloseQuery" , es decir antes de cerrar el form, preguntas si .avi sigue reproduciendose y en ese caso evitas que se cierre el form "canclose:=false"

Saludos!!

Taribus
05-02-2004, 14:45:45
Hola,

yo uso delphi5 y he probado con el clock.avi de W2k y no me ha dado ningun error al cerrar el formulario cuando se estaba ejecutando.

Un saludo, :D

Amilius
12-02-2004, 18:57:01
Hola,

yo uso delphi5 y he probado con el clock.avi de W2k y no me ha dado ningun error al cerrar el formulario cuando se estaba ejecutando.

Un saludo, :D

Que tal si pruebas con otros videos, de más de 1Mb y que sean .avi de verdad porque algunas veces cambian de nombre a los .mpg a .avi. Un .mpg de verdad puede ser dividido en dos archivos y todavía puedes ver (reproducir) las mitades de los archivos, igual que los .mp3. Esa es la ventaja de los videos .mpg y los formatos estándar mpeg, no son como la porquería de formatos micro$oft que sólo dan dolores de cabeza y no sirven para nada.

Taribus
13-02-2004, 13:21:57
Que tal si pruebas con otros videos, de más de 1Mb y que sean .avi de verdad
pues bien, he cogido un fichero que viene en la demo de Delphi, es decir , speedis.avi que tien un tamaño 4.807 Kb, ( no se si sera suficiente), pero me sigue sin dar ningun error al cerrar el formulario, una vez ejecutado el fichero en el evento onactivate del formulario.

xok
06-04-2004, 19:26:23
Well ... i have the same problem .. but with some harder way to solve it!

If you use Div-x 5.1 that problem with disappear, *** but *** you will have another huge one !
Anytime you open a new file (.avi) there will be a memory leak !
4 KB > or so ...
I have on programm running 24x7, so it gives a huge memory loss .. 2GB per week!

Using codecs DIV-X 3.1 alpha, it will not give memory leak but that problem appears and the program does not run properly on the MediaPlayer.Close !
or something like that ...

I can use 3.1 alpha Visual Basic flawlessly using MCI commands but in my application Visual Basic will be very hard to program (is connected to mysql dll's .. TShockwaveFlash .. components etc etc)


Ideas around the bug will be appreaciated :)

casimaxi
10-11-2004, 07:50:48
Como hago para reproducir mp3 en delphi 7?. necesito algun algoritmo de descompresion.Como hago para al selecionar un archivo desde un filelistbox me lo ejecute donde yo quiero (ej. un panel)?.Hay que asignarlo a la propiedad filename(a mi no me funciona)?