Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Media Player y AVIs "camaralentos" (https://www.clubdelphi.com/foros/showthread.php?t=26728)

Deiv 01-11-2005 21:32:23

Media Player y AVIs "camaralentos"
 
Hola soy nuevo en Delphi y en el foro, vengo trabajando con la
versión 7, mi siguiente pregunta como Novato se relaciona con el
archivo AVI y MediaPlayer.

He colocado en la propiedad FileName un archivo AVI cualquiera que
pesa entre 8 y 10 MB y Delphi NO ME ACEPTA, luego el mismo Video lo
he comprimido con VirtualDub (opción: Save Old Format AVI) y solo
así me funciona, pero el AVI creció entre 70 y 90 MB y
perdió calidad ¿será por lo de "Save Old Format"?.

Cuando hago correr el AVI (comprimido) con el Reproductor de
Windows, aunque la COMPRENSIÓN con VirtualDub fue un éxito la
imagen no es buena, es decir DE BAJA CALIDAD, pero Funciona!. En
cambio al hacer correr con Delphi me muestra MOVIMIENTOS LENTOS cual
si fueran pausados o con una especie de hipo o "camaralenta". Estoy
con una Pentium IV de 3 GHz y RAM 512, ¿a que se debe todo ello,
que propiedad estoy manejando mal del Mediaplayer?

Mis preguntas:
-¿Que tipo de AVIs soporta Delphi? y ¿que codecs son COMPATIBLES?
-¿Cuales son los programas (un par de ejemplos) que mejor
compriman un AVI y los pueda recuperar en Delphi?
-¿Como puedo ver mis AVIs en Delphi CON muy BUENA CALIDAD Y de
manera que no sean lentos o camaralentas?

En VirtualDub por ejemplo cuando selecciono la opción: "Video
Compression" me sale como unos 15 tipos de codecs ¿como guiarme
CON CUAL debo comprimir para recuperarlo en Delphi? ¿acaso debo
conformarme a mostrar un Programa hecho con Delphi con AVIs de baja
calidad y "camaralentas"?
Gracias.

Deiv 05-01-2006 15:03:21

Delphi es bueno para los AVIs?
 
Hola,
He colocado en la propiedad FileName de un TMediaPlayer un archivo AVI cualquiera que pesaba entre 8 y 10 MB y NO ME ACEPTA, es decir al Compilar y Correr el programa sale un mensaje de ERROR (debe ser por el formato, pienso), luego el mismo Video lo he comprimido con VirtualDub (opción: Save Old Format AVI) y solo así me funciona, pero el AVI creció entre 70 y 90 MB y perdió calidad, ¿será por lo de "Save Old Format"?.

Cuando hago correr el AVI con el Reproductor de Windows, aunque esta COMPRENSIÓN (Yo no la llamaría Comprimida, sino que Extendida "Crecida") con VirtualDub fue un éxito la imagen no es buena, es decir DE BAJA CALIDAD, pero Funciona!!. En cambio al hacer correr con Delphi el "Extendido" me muestra MOVIMIENTOS LENTOS cual si fueran pausados o con una especie de hipo "camaralenta". Estoy con una Pentium IV de 3 GHz y RAM 512 Video 32 MB, ¿a que se debe todo ello?
Mis preguntas:

1.- ¿Que tipo de AVIs soporta Delphi? y ¿que codecs son COMPATIBLES?
2.- ¿Como puedo ver mis AVIs en Delphi CON muy BUENA CALIDAD Y de manera que no sean "camaralentos"?
3.- ¿Cuales son los programas Compresores de Video (un par de ejemplos) que mejor compriman un AVI y los pueda recuperar y trabajar en Delphi?

En VirtualDub por ejemplo cuando selecciono la opción: "Video Compression" me sale como unos 15 tipos de codecs ¿como guiarme CON CUAL debo comprimir para Delphi? ¿Acaso Delphi no tiene la capacidad de mostrar en un Programa realizado por él: un AVI de buena calidad?, cual sería la solución?

Creo que hice muchas preguntas ¿ ?, pero me bastaría para orientarme con la Pregunta 1) y 2) y quizá alguna sugerencia de direcciones donde me pueda informar sobre el Tema.
Gracias.

delphi.com.ar 05-01-2006 15:17:45

Si bien lo que te voy a decir, no creo que te solucione tu problema en particular, es bueno que lo sepas: Delphi es un lenguaje multipropósito, no un reproductor multimedia. La pregunta correcta sería si algun control, en tu caso TMediaPlayer, es el adecuado para reproducir tales tipos de archivos.
El TMediaPlayer no es mas que un componente que "wrappea" la MCI (Media Control Interface) de Windows, en este caso no hay código Delphi reproduciendo o decodificando los streams de audio y video, simplemente hay código que le dice a la MCI que hacer y la MCI es quien se encarga de procesar esta info. A riesgo de equivocarme, creo que el MMPlayer de Windows tambien utiliza la MCI, por lo que tendrías que tener resultados similares.

Saludos!

Athanatos 05-01-2006 15:35:52

Si realmente quieres calidad+velocidad tienes que investigar bastante este tema: DirectShow. Olvidate del mci.

El Tmediaplayer practicamente esta deprecado por depender de elementos deprecados del sistema operativo ( para casi todo menos musica que va bien ). Asi que como todo lo que es deprecado generalmente sigue funcionando pero muy lentamente. :cool:

Nota: El antiguo MMPlayer que venia con el 95 98 millenium si usaba mci, pero ya no esta presente en xp y fue reemplazado por uno nuevo que se basa en directShow.

P.d. :D Realmente creias que eso depende "del delphi"? Eso me hace mucha gracia, como algunos comentarios como "y delphi es bueno para graficos?" :D:D:D

marcoszorrilla 05-01-2006 15:40:43

Cita:

P.d. Realmente creias que eso depende "del delphi"? Eso me hace mucha gracia, como algunos comentarios como "y delphi es bueno para graficos?"
Pues Athanatos, en este Foro lo fundamental es intercambiar conocimientos de tal manera que el que sabe algo lo pone altruistamente a disposición de los demás, sin que esto sea por supuesto obligatorio, pero al menos ésta es la filosofía que se sigue. Si se comparte algo estupendo, pero creo que debe de ser desde la humildad y sin zaherir a la persona que recibe la supuesta enseñanza.

Un Saludo.

[Gunman] 05-01-2006 16:04:44

Como bien ha dicho Federico todo lo que puedas reproducir con el Windows Media Player (almenos hasta la versión 9) lo podrás reproducir con el TMediaPlayer, el TMediaPlayer usa la API de Windows (Win32) y por lo tanto, deberías buscar en la ayuda de esta que formatos y codecs de vídeo soporta la MCI. Te aconsejo que busques por la MSDN y por la ayuda que Delphi trae sobre la Win32.
Siento no poder ayudarte más...

[Gunman] 05-01-2006 16:47:54

He estado probando el TMediaPlayer, funciona a la perfección con DivX y Xvid...
De hecho, con el MCI se pueden reproducir todos los codecs que tenga instalados la computadora.

Athanatos 06-01-2006 21:04:30

Probalo de forma que el tamaño de la pelicula NO sea del 100%, 200% o pantalla completa y veras lo lento que va. :D Para eso esta direct->show y para ver si una aplicacion esta usando directshow prueba con capturar la pantalla, la zona del video quedara en negro o cualquier cosa menos con la imagen del video.

Si el otro formato de video no corre con delphi es problema de configuracion de mci, tienes que mapear el codec a una extension. Y para que veas lo antiguo que es en windows 98 tienes que mapear la extension .mp3 al codec para que lo reproduzca (en win.ini) (si no tienes instalado una version actual del media player) o cambiarle la extension de .mp3 a .mpg. En xp no necesitas hacer eso para el mp3 pero seguramente es la razon por la que tu .avi no es reproducido, intenta cambiarle la extension a .mpg o modificar el win.ini.

El mci maneja unas constantes para saber que tipo de codec o grupo de codecs utilizara para un determinado tipo de extension. Intenta fijar esto manualmente ya que viene en automatico de forma predefinida. Seguramente la constante del codec puede que no este definida en delphi, pero bastara con que investigues cual corresponde y definirlo en tu programa para no tener el lio de configurar el win.ini

Esta es una version de solo reproduccion del original y no tiene problemas con la extension .mp3 en win98 ni en xp.

En el codigo del Tmediaplayer tienes que modificar esto:

Al momento de agregar la constante que te falta tienes que sincronizar: (constantes de mci)

DeviceName: array[TMPDeviceTypes] of PChar = ('', 'AVIVideo', 'CDAudio', 'Sequencer',
'WaveAudio','MPEGVideo2','MPEGVideo');

Con:

TMPDeviceTypes = (dtAutoSelect, dtAVIVideo, dtCDAudio, dtSequencer, dtWaveAudio,dtMP3Music,dtMPEGVideo);

Aqui va definida la parte de las constantes en cadena:

Código:

{***** MCI Commands *****}

procedure TMediaPlayer.Open;
const
  DeviceName: array[TMPDeviceTypes] of PChar = ('', 'AVIVideo', 'CDAudio', 'Sequencer',
    'WaveAudio','MPEGVideo2','MPEGVideo');


Deiv 07-01-2006 15:56:04

No soy Informático de formación, soy Químico
 
Gracias a todos,
Sinceramente estoy muy contento con el Foro esta pregunta la hice ya hace 3 meses atrás en otros foros, las respuestas no fueron convincentes o en algunas simplemente callaron, es ahora que tengo mucha mas confianza en el Foro ya que hay muchos participantes y gente que responde con conocimientos sólidos y me sacan de la duda.

Quiero aclarar por favor al foro que no soy ni Programador en Sistemas ni Informático, esto relacionado a los comentarios en diferentes hilos como
Cita:

Empezado por CasimiroNotevi
a mi me parpadean los ojos al ver ese código

o en este
Cita:

Empezado por Athanatos
P.d. Realmente creias que eso depende "del delphi"? Eso me hace mucha gracia, como algunos comentarios como "y delphi es bueno para graficos?

y a veces hago preguntas tan estúpidas (obvio) para los que tienen mayor conocimiento en el campo. Tengo como formación profesional otra carrera totalmente distinta a lo que es la Informática: Química, pero como muchos dicen nunca es tarde para aprender verdad?, y el poco tiempo que dispongo debido a mi trabajo en mi campo no me permite siquiera tomar cursos de Informática. Delphi lo voy aprendiendo en Internet (autodidactamente) a través de la investigación en distintas páginas y con conocimientos mínimos de Pascal y con ayuda de los Foros, redundo no es tarde para aprender y me llevo unos minutos o algunas horas (cuando tengo tiempo) de averiguar o participar en los foros con preguntas a mis dudas. Yo programa (intento) cuando es necesario, cuando hay tiempo, o cuando se me ocurre algo, más me inclino como un Hobby.
En lo personal estoy muy agradecido a todos los que responden a mis preguntas. Y espero sigan comprendiendo mis futuras preguntas torpes de nuevos hilos por las razones que les explico, pues yo empiezo a programar solamente cuando veo necesario para mi o algo interesante para crear alguna Aplicación.

Yendo al tema, verán he creado una película de unos segundos en formato AVI con Magix Video Deluxe para mostrarlo en mi Aplicación después del Splash Screen en un formulario pequeño (algo así como una presentación), y de ahí nació mis dudas como en un principio les mencioné, voy a investigar lo del MCI y DirectShow, además me quedó claro que no depende de Delphi. Me recomendaron en alguna parte que lo realice con Flash, no se si sería lo correcto, aunque me empeciné de presentar un AVI con un códec compatible en Delphi 7 y ver esa película de unos segundos. Alguna sugerencia?
Un saludo


La franja horaria es GMT +2. Ahora son las 15:22:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi