Vlc player pozisyon

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Vlc player pozisyon

Mesaj gönderen hido »

İyi akşamlar Vlc play'da play durumundaki videonun pozisyonunu nasıl ayarlaya bilirim? bu konuda yeterince kaynak olmadığı gibi bir kaç test yaptım başarısız oldum...

Kod: Tümünü seç

  
  PasLibVlcPlayer1.SetVideoPosInMs(100000000000000);
  PasLibVlcPlayer1.Play('C:\Users\Hido\Videos\Piyano.avi');
En son hido tarafından 03 Ara 2015 12:45 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 03:09
Konum: Azerbaycan, Bakü
İletişim:

Re: Vlc playe pozisyon

Mesaj gönderen AliZairov »

İyi akşamlar. Bileşenin örneklerinde mevcut bi bak istersen. TrackBar ile yapmış örnekde.
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Vlc playe pozisyon

Mesaj gönderen hido »

AliZairov yazdı:İyi akşamlar. Bileşenin örneklerinde mevcut bi bak istersen. TrackBar ile yapmış örnekde.
Selam, Açıkcası Trackbar dan bir şey anlamadım :D

procedure TMainForm.TrackbarChange(Sender: TObject);
begin
if PasLibVlcPlayer1.CanSeek() then
begin
PasLibVlcPlayer1.SetVideoPosInMs(ProgBar.Position);
end;
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Vlc player pozisyon

Mesaj gönderen mrmarman »

İşte burada ilgilenecek olduğun nokta trackbar'ın uzunluğunu (max) video uzunluğuna denk olduğu.

Dolayısı ile anlaşılması gereken husus, SetVideoPosInMs ile (0)'dan bu uzunluğa kadar vereceğin değer video üzerinde ileri geri konumlanmanı sağlayacaktır.

CanSeek() sonucu true ise video dosyası yüklü ve içinde yeni pozisyon set etmek için uygun anlamındadır.
Resim
Resim ....Resim
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: Vlc player pozisyon

Mesaj gönderen Serhat »

Benim yöntemde o zaman hata nerede?

Kod: Tümünü seç

PasLibVlcPlayer1.SetVideoPosInMs(100000000000000);
  PasLibVlcPlayer1.Play('C:\Users\Hido\Videos\Piyano.avi');
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Vlc player pozisyon

Mesaj gönderen mrmarman »

önce play sonra setvideopos ile konumlanmayı denedin mi ?
Resim
Resim ....Resim
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Vlc player pozisyon

Mesaj gönderen thelvaci »

Serhat yazdı:Benim yöntemde o zaman hata nerede?

Kod: Tümünü seç

PasLibVlcPlayer1.SetVideoPosInMs(100000000000000);
  PasLibVlcPlayer1.Play('C:\Users\Hido\Videos\Piyano.avi');
Pozisyon bilgisi olarak 100.000.000.000.000 ms. değerini geçmişsiniz; 100.000.000.000 sn. bu da 1.666.666.666 dk. 27.777.777 saat 1.157.407 gün gibi bir zaman dilimine tekabül ediyor. Sizce de burada bir sorun varmış gibi görünmüyor mu ? (PasLibVlc 'yi ve metodunu bilmiyorum ama fonksiyon isminden anladığım kadarı ile milisaniye parametresi bekliyor)
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Vlc player pozisyon

Mesaj gönderen hido »

mrmarman yazdı:İşte burada ilgilenecek olduğun nokta trackbar'ın uzunluğunu (max) video uzunluğuna denk olduğu.

Dolayısı ile anlaşılması gereken husus, SetVideoPosInMs ile (0)'dan bu uzunluğa kadar vereceğin değer video üzerinde ileri geri konumlanmanı sağlayacaktır.

CanSeek() sonucu true ise video dosyası yüklü ve içinde yeni pozisyon set etmek için uygun anlamındadır.

Hocam denemediğim yöntem kalmadı...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Vlc player pozisyon

Mesaj gönderen mrmarman »

Kod: Tümünü seç

Var
  iPos, iUz : Cardinal;
begin
  PasLibVlcPlayer1.Play( 'C:\Users\Hido\Videos\Piyano.avi');
  while NOT (PasLibVlcPlayer1.GetState in [plvPlayer_Error, plvPlayer_Playing]) do
  begin
    Application.ProcessMessages;
    Sleep(1);
  end;
  iPos := PasLibVlcPlayer1.GetVideoPosInMs;
  iUz  := PasLibVlcPlayer1.GetVideoLenInMs;
  if PasLibVlcPlayer1.CanSeek()
    then begin
      ShowMessageFmt('Pos:%d, Max:%d, Gidilecek:%d', [ iPos, iUz, iUz div 2]);
      PasLibVlcPlayer1.SetVideoPosInMs( iUz div 2 )
    end
    else ShowMessage( 'Player boş...');
end;
Resim
Resim ....Resim
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Vlc player pozisyon - çözüldü

Mesaj gönderen hido »

mrmarman yazdı:

Kod: Tümünü seç

Var
  iPos, iUz : Cardinal;
begin
  PasLibVlcPlayer1.Play( 'C:\Users\Hido\Videos\Piyano.avi');
  while NOT (PasLibVlcPlayer1.GetState in [plvPlayer_Error, plvPlayer_Playing]) do
  begin
    Application.ProcessMessages;
    Sleep(1);
  end;
  iPos := PasLibVlcPlayer1.GetVideoPosInMs;
  iUz  := PasLibVlcPlayer1.GetVideoLenInMs;
  if PasLibVlcPlayer1.CanSeek()
    then begin
      ShowMessageFmt('Pos:%d, Max:%d, Gidilecek:%d', [ iPos, iUz, iUz div 2]);
      PasLibVlcPlayer1.SetVideoPosInMs( iUz div 2 )
    end
    else ShowMessage( 'Player boş...');
end;


:bravo: :bravo: :bravo: :bravo: :bravo: :bravo: :bravo: :bravo: :bravo:
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Vlc player pozisyon

Mesaj gönderen hido »

mrmarman hocam, projemi kısmi olarak tamamladım, ufak bir sıkıntı yaşamakatayım yardımcı olursanız sevinirim :bravo:

Videoyu istediğim yerden başlatabiliyorum buraya kadar sorun yok, fakat videoda sürekli olarak anlık kesilme oluşuyor (play, pause) yapılmış gibi bu durumun nasıl çözümleyebilirim?

Not: pause butonuna pause, play yapılınca durum düzeliyor...

Video play

Kod: Tümünü seç

procedure TMainForm.PlayClick(Sender: TObject);
begin
    with PasLibVlcPlayer1 do
    begin
      Play(VideoAdresi);
      while Not(GetState in [plvPlayer_Error, plvPlayer_Playing]) do
      begin
        Application.ProcessMessages;
        Sleep(1);
      end;
      if CanSeek() then
      begin
        SetVideoPosInMs(TimeMilliSeconds(Videogiris));
      end;
    end;
    
pause

Kod: Tümünü seç

procedure TMainForm.PauseClick(Sender: TObject);
begin
    if PasLibVlcPlayer1.stateName= 'Playing' then
    begin
      PasLibVlcPlayer1.Pause();
      VideoTrackBar.OnChange := VideoTrackBarChange;
    end
    else
    begin
      PasLibVlcPlayer1.Resume();
      VideoTrackBar.OnChange := Nil;
    end;
  end;
end;
pozisyon

Kod: Tümünü seç

procedure TMainForm.TrackBarChange(Sender: TObject);
begin
  if PasLibVlcPlayer1.CanSeek() then
  begin
    PasLibVlcPlayer1.SetVideoPosInMs(VideoTrackBar.Position);
  end;
end;
Cevapla