Media player giriş, çıkış sürelerini belirleme...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

Media player giriş, çıkış sürelerini belirleme...

Mesaj gönderen dogan »

Selam,

FireMonkey, Media play da bir videonun giriş ve çıkışlarını edit içine girmiş olduğum sürelere göre oynatmak istiyorum, fakat bununla ilgili hiçbir kaynak bulamadım, bu konu hakkında kaynak veya bilgisi olan arkadaşlar yardımcı olabilir misiniz...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Media player giriş, çıkış sürelerini belirleme...

Mesaj gönderen mrmarman »

Olay FireMonkey olunca sıkılabilirsin ama bit Timer koyup, her timer interval değerinde MediaPlayer'in CurrentTime değerini okumalısın.
Değerlendirmeni zaten okuduktan sonra yapacaksın.
Resim
Resim ....Resim
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

Re: Media player giriş, çıkış sürelerini belirleme...

Mesaj gönderen dogan »

mrmarman yazdı:Olay FireMonkey olunca sıkılabilirsin ama bit Timer koyup, her timer interval değerinde MediaPlayer'in CurrentTime değerini okumalısın.
Değerlendirmeni zaten okuduktan sonra yapacaksın.

Sayın mrmarman, farkındayım "FireMonkey" konusunda, :D yapmak istediğim şey onlarca videoyu belirlediğim giriş ve çıkışlara göre arka arkaya oynatmak bu konuda yol göstermek adına tavsiyeniz nedir acaba...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Media player giriş, çıkış sürelerini belirleme...

Mesaj gönderen mrmarman »

Bir ilüzyon deneyebilirsin. Ben bu trükleri severim sonuç vereceğini değerlendiriyorum.
Aynı yerde üst üste iki tane MediaPlayer koy.
Birisi yürütülürken diğerini hazır hale getir. Süresi dolanı arkaya atıp sırası geleni öne getir.

Senin için bir örnek uyguladım..
Resim

veya
Resim

Hatta bir kaç saniye önce başlatırsan öne arkaya getirme işlemini width, height değişikliği yaparak sanki bir geçiş efektine de imkan sağlayabilirsin.
Resim
Resim ....Resim
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

Re: Media player giriş, çıkış sürelerini belirleme...

Mesaj gönderen dogan »

mrmarman yazdı:Bir ilüzyon deneyebilirsin. Ben bu trükleri severim sonuç vereceğini değerlendiriyorum.
Aynı yerde üst üste iki tane MediaPlayer koy.
Birisi yürütülürken diğerini hazır hale getir. Süresi dolanı arkaya atıp sırası geleni öne getir.

Hatta bir kaç saniye önce başlatırsan öne arkaya getirme işlemini width, height değişikliği yaparak sanki bir geçiş efektine de imkan sağlayabilirsin.

Güzel bir örnek hocam, benimde aklımda iki adet player kullanmak var da ilüzyon konusunda "yetersizim" playerlar bir birini nasıl tetikleyecek :D
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Media player giriş, çıkış sürelerini belirleme...

Mesaj gönderen mrmarman »

Timer içinde süre sonuna geleni sen bileceksin , sona geldiğinde diğerine geçişi de dolayısıyla sen tetiklemiş olacaksın.
Resim
Resim ....Resim
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

Re: Media player giriş, çıkış sürelerini belirleme...

Mesaj gönderen dogan »

mrmarman yazdı:Timer içinde süre sonuna geleni sen bileceksin , sona geldiğinde diğerine geçişi de dolayısıyla sen tetiklemiş olacaksın.

Hocam videoyu istediğim süreden başlatma konusunda işin içinden çıkamadım, yardımcı olabilir misiniz...

Kod: Tümünü seç

procedure TForm2.PlayClick(Sender: TObject);
begin
  with XPlayer do
  begin
    Media.CurrentTime := StrToInt(Edit1.Text);
    Play;
  end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Media player giriş, çıkış sürelerini belirleme...

Mesaj gönderen mrmarman »

Edit1.Text'de ne var ?
Elindeki malzeme :
- MediaPlayer1.Media.Duration (100 ns.) nanoSaniye'lik dilimler üzerinden skalalandırılmışdır. bkz. FMX.Media.TMediaPlayer.Duration

- Bunu saniyeye dönüştürmek için 10000000 rakamına bölmen lazım ki bu bölünecek rakam MediaTimeScale olarak CONST ifade halinde hazır bekliyor. Kullanımı MediaPlayer1.Media.Duration div MediaTimeScale şeklinde tam sayı bölüm elde edersin. Bu değer sana saniye cinsinden videonun toplam uzunluğunu verir.

- Şu aşamada Edit1.Text içinde saniye cinsinden bir konumlama yapacaksan yukarıdaki bilgi ışığında ns. değerine dönüştürmen gerekiyor ve dolayısı ile saniye değerini MediaTimeScale ile çarpman ve MediaPlayer1.CurrentTime içine öyle atama yapman gerekiyor. :idea: Özetle ne türde zaman biriminden değerin olacaksa atama yapmadan önce (100 NanoSaniye) mertebesine dönüştürmen lazım.

- Kafa karışıklığı olmasın istersen işlem basit (sn) cinsinden süreyi bul, MediaTimeScale ile çarp al sana CurrentTime değeri

Buraya kadar anlamadığın varsa yine sorarsın.
Resim
Resim ....Resim
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

Re: Media player giriş, çıkış sürelerini belirleme...

Mesaj gönderen dogan »

mrmarman yazdı:Bir ilüzyon deneyebilirsin. Ben bu trükleri severim sonuç vereceğini değerlendiriyorum.
Aynı yerde üst üste iki tane MediaPlayer koy.
Birisi yürütülürken diğerini hazır hale getir. Süresi dolanı arkaya atıp sırası geleni öne getir.

Senin için bir örnek uyguladım..
Resim

veya
Resim

Hatta bir kaç saniye önce başlatırsan öne arkaya getirme işlemini width, height değişikliği yaparak sanki bir geçiş efektine de imkan sağlayabilirsin.

Hocam nerede hata yapıyorum anlamadım. Timer ile XPlayer süresi dolunca YPlayer devreye girmesi lazım fakat bir türlü geçişi sağlayamadım.

Kod: Tümünü seç

procedure TForm2.AutoPlayTimer(Sender: TObject);
begin
  if XPlayer.CurrentTime = XPlayer.Duration then
  begin
    MediaPlayerMonitor.MediaPlayer := YPlayer;
    YPlayer.FileName := YPlayerYol;
    YPlayer.CurrentTime := 0;
    YPlayer.Play;
    YPlayerSure.Enabled := True;
    Durum := 'YPlayer';

    XPlayer.Stop;
    XPlayerSure.Enabled := False;
    Memo1.Lines.Add('YPlayer');
  end
  else
  begin
    if YPlayer.CurrentTime = YPlayer.Duration then
    begin
      MediaPlayerMonitor.MediaPlayer := XPlayer;
      XPlayer.FileName := XPlayerYol;
      XPlayer.CurrentTime := 0;
      XPlayer.Play;
      XPlayerSure.Enabled := True;
      Durum := 'XPlayer';

      YPlayer.Stop;
      YPlayerSure.Enabled := False;
      Memo1.Lines.Add('XPlayer');
    end;
  end;
end;
Cevapla