Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   2 MediaPlayer ¿no se puede? (https://www.clubdelphi.com/foros/showthread.php?t=79426)

Euge10 04-07-2012 00:18:09

2 MediaPlayer ¿no se puede?
 
Amigos del Foro me pueden explicar ¿por qué no puedo reproducir el mismo archivo de video en dos MediaPlayers cada uno ubicados en dos formularios distintos o cómo puedo hacerlo?

Aclaro que por separado los dos corren bien.

¿Alguna idea como puedo intentar?

Casimiro Noteví 04-07-2012 00:45:48

Hola, para una próxima vez procura elegir el foro adecuado, esta pregunta no tiene nada que ver con "OOP", gracias.

En relación a tu pregunta, se supone que será algo configurable o igual es una limitación, a ver si alguien puede confirmártelo, yo de estas cosas de windows no tengo mucha idea.

ecfisa 04-07-2012 04:58:57

Hola Euge10.

Una forma en que podes reproducir el video al mismo tiempo (casi) en dos forms es:
Código Delphi [-]
...
uses MMSystem, Unit2;

procedure TForm1.btnPlayClick(Sender: TObject);
const
  FILE_NAME = 'C:\Users\Public\Videos\Sample Videos\Butterfly.wmv'; // nombre del archivo
begin
  mciSendString('close video1', nil,0, 0);
  mciSendString('open "' + FILE_NAME + '" alias video1', nil, 0, 0);
  mciSendString(PChar('window video1 handle ' + IntToStr(Handle)), nil,0,0);
  mciSendString(PChar('put video1' + Format('%d %d %d %d',[Left,Top,Width,Height])),nil,0,0);
  mciSendString('play video1', nil, 0, 0);

  with Form2 do
  begin
    Show;  // se supone ya creado
    mciSendString('close video2', nil,0, 0);
    mciSendString('open "' + FILE_NAME + '" alias video2', nil, 0, 0);
    mciSendString(PChar('window video2 handle ' + IntToStr(Handle)), nil,0,0);
    mciSendString(PChar('put video2' + Format('%d %d %d %d',[Left,Top,Width,Height])),nil,0,0);
    mciSendString('play video2', nil, 0, 0);
  end;
end;

También podes reproducir el video en varios TPanel dentro de un mismo form. Pone algunos panels dentro del form (2, 4,... ) y probá este código:
Código Delphi [-]
...
uses MMSystem;

procedure TForm1.btnPlayClick(Sender: TObject);
const
  FILE_NAME = 'C:\Users\Public\Videos\Sample Videos\Butterfly.wmv'; // nombre del archivo
var
  i: Integer;
  str: string;
begin
  for i:= 0 to ComponentCount-1 do
  begin
    if Components[i] is TPanel then
      with TPanel(Components[i]) do
      begin
        str:= 'video'+IntToStr(i+1);
        mciSendString(PChar('close video' + str), nil, 0, 0);
        mciSendString(PChar('open "' + FILE_NAME + '" alias video' + str), nil, 0, 0);
        mciSendString(PChar('window video'+ str +' handle ' + IntToStr(Handle)), nil, 0, 0);
        mciSendString(PChar('put video'+ str + Format('%d %d %d %d',[Left, Top, Width, Height])), nil, 0, 0);
        mciSendString(PChar('play video'+ str), nil, 0, 0);
      end;
  end;
end;


Saludos.

Euge10 04-07-2012 15:09:29

Funcionando
 
Casimiro soy nueva en el foro y creo que estuve en lo correcto de publicar aquí el nuevo tema ya que cuando menciono "mediaplayer" y forms suponía que entenderían que me refería a TMediaPlayer´s y forms dentro de Delphi.

Por otro lado:
Ecfisa muchísimas gracias por ayudar... voy a probar tus códigos... Te explico lo que había hecho hasta el momento. Como el problema era el filename que ya estaba en uso, lo que hice fue copiar el archivo seleccionado a otra carpeta y pasar ese nuevo archivo como nuevo filename y después trato de liberar memoria y eliminar el archivo para que no queden duplicados. me funcionaba pero trataré con tu código. Muchas Gracias.

Casimiro Noteví 04-07-2012 15:53:46

Cita:

Empezado por Euge10 (Mensaje 436689)
Casimiro soy nueva en el foro

Ya lo veo, te diste de alta hace unos días y esta es tu segunda pregunta en los foros.
Bienvenida :)


La franja horaria es GMT +2. Ahora son las 04:01:11.

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