Delphi Can

Orjinalini görmek için tıklayınız: Video Oynatma Hakkında
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Selamlar

Bir formun üzerinde video oynatmak istiyorum. 
Amaç müşteri belirlenen bir klasöre atmış olduğu videoları 2. bir ekranda tanıtım amacı ile oynatılmasını istiyor.

Özellikle müşterinin makinesine kurulum yapmak istemiyorum. VLC, Codec vb

Olay başta çok basit gibi geldi fakat sonra format türleri işin içine girince ortalık karışmaya başladı.
Bu konuda daha önceden tecrübesi olan arkadaşlar yardımcı olabilirler mi.

MediaPlayer üzerinde denemeler yaptım fakat Codec sorunları yaşadım.
Deneme amacı ile trial olan TVideoGrabber ile sorunsuz çalıştı fakat ücretli ve fiyatı çok yüksek ondan vazgeçtim.
Ücretsiz olan bir tool öneriniz yada bir yol varmı

Teşekkürler
Merhaba TWebBrowser deneyebilirsiniz. Gemini "write a delphi pascal vcl code that plays video file in twebbrowser" örnek kodu veriyor
Selamlar
Konuyu tekrar gündeme getiricem kusura bakmayın
Ek paketler yüklemeden Direkt Video oynatma işi yapan oldumu acaba
Videolar kullanıcılar tarafından bilinmeyen kaynaklı mı seçilecek yoksa size ait bir kütüphaneden mi sunulacak?

Farkı ne derseniz, video format, codec, ses kanal sayısı, altyazı vs vs denetimi yapmaya gerek olacak mı?

Video dosyaları (ders, illüstrasyon, müzik klibi, ağda video akışı) size ait ise media player veya vlc vb. ile kolay gösterim yapabilecek format/codec vs seçip tüm videoları buna dönüştürecek ffmpeg komutları belirler, ürünleri kütüphanenize eklerdiniz.
selamlar @mrmarman hocam
uygulama içerisinde bir reklam amaçlı video oynatma penceresi mevcut.
uygulama 1 dakika çalışmadığında reklam moduna geçiyor.
Kullanıcının daha önceden belirlediği dizin içindeki
mp4, mov, wmv, avi uzantılı dosyaları listeye alıp sırasıyla oynatmaya başlıyor.
Klavye yada Mouse hareketini olunca uygulamaya tekrar geri donuyor
VLC kurulumu yapmadan sadece sisteminizde kurulu VLC'nin iki DLL dosyasını ve PLUGINS klasörünü alsanız, proje klasörüne sizin programınızın eki şeklinde kopyalasanız sizi kurtarır mı ?

VLC dll'leri LGPL lisansı olduğundan araştırın ve teyit edin ancak bildiğim kadarıyla yanında adını kodunu değiştirmediğinizde serbest olarak biliyorum. bkz: https://www.videolan.org/legal.html

Kod:
What are the usage restrictions for VideoLAN software?
Short answer: there are none.

You can use the software in the way you want (within the boundary of law), for personal, educational, research, military, governmental, professional purpose or any other way…

May I redistribute a piece of VideoLAN software?
Yes, you may distribute an original or a modified version of a piece of VideoLAN software as long as you comply with its license terms.

Most pieces of software from VideoLAN are licensed under the GNU General Public License Version 2 (referred herein as GPL).

You will find a license file named COPYING in all our products.

Note: You do not need to ask VideoLAN the permission to distribute VideoLAN software!


İLAVE : 
----------

Bilgisayar başına geçtim bir örnek (eski test projelerimden birinden devşirdim)

Boş bir VCL proje açın bir Button br Panel koyun bu kadar aşağıdaki kodu uygulayın.

Derlediğiniz EXE klasörüne aşağıdaki VLC DLL dosyalarını koyun :

Kod:
libvlccore.dll
libvlc.dll

bir de bu DLL dosyaların aldığınız klasördeki plugins klasörünü olduğu gibi koyun.

Sonra sistemde kurulu olan VLCPlayer uygulamasını UYGULAMALAR altında UNINSTALL ederek kaldırın ki kullanıcı yakasında kurulu değilken de çalışabildiğini canlı olarak test etmiş olun.
 
Projeyi çalıştırın butona basıp bir tane video dosyası seçin. 

Sonuç sizi tatmin ediyorsa bu işlemi PasLibVLC paketiyle (eski bildiğiniz şekilde) yapabilirsiniz. Zaten o paketin bir kısmı kod örneğindeki DLL erişimini yapıyor diğeri de HELPER CLASS olarak Player oluşturuyor.


const
  Flibvlc = 'libvlc.dll';

type
  Flibvlc_instance_t     = Pointer;
  Flibvlc_media_t        = Pointer;
  Flibvlc_media_player_t = Pointer;

function  libvlc_new(argc: Integer; argv: PPAnsiChar): Flibvlc_instance_t; cdecl; external Flibvlc;
procedure libvlc_release(inst: Flibvlc_instance_t); cdecl; external Flibvlc;

function  libvlc_media_new_path(inst: Flibvlc_instance_t; path: PAnsiChar): Flibvlc_media_t; cdecl; external Flibvlc;
procedure libvlc_media_release(media: Flibvlc_media_t); cdecl; external Flibvlc;

function  libvlc_media_player_new_from_media(media: Flibvlc_media_t): Flibvlc_media_player_t; cdecl; external Flibvlc;
procedure libvlc_media_player_release(mp: Flibvlc_media_player_t); cdecl; external Flibvlc;

procedure libvlc_media_player_set_hwnd(mp: Flibvlc_media_player_t; drawable: HWND); cdecl; external Flibvlc;
procedure libvlc_media_player_play(mp: Flibvlc_media_player_t); cdecl; external Flibvlc;
procedure libvlc_media_player_stop(mp: Flibvlc_media_player_t); cdecl; external Flibvlc;

var
  FVLC    : Flibvlc_instance_t;
  FMedia  : Flibvlc_media_t;
  FPlayer : Flibvlc_media_player_t;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  LFileName: String;
begin
  with TOpenDialog.Create(nil) do
  try
    if NOT Execute then exit;

    LFileName := FileName;

    if FPlayer <> nil then
    begin
      libvlc_media_player_stop(FPlayer);
      libvlc_media_player_release(FPlayer);
      FPlayer := nil;
    end;

    FMedia  := libvlc_media_new_path(FVLC, PAnsiChar( AnsiString(LFileName) ));
    FPlayer := libvlc_media_player_new_from_media(FMedia);

    libvlc_media_player_set_hwnd(FPlayer, Panel1.Handle);
    libvlc_media_player_play(FPlayer);
  finally
    Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

  ReportMemoryLeaksOnShutdown := TRUE;

  FVLC    := libvlc_new(0, nil);
  FMedia  := nil;
  FPlayer := nil;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if FPlayer <> nil then
  begin
    libvlc_media_player_stop(FPlayer);
    libvlc_media_player_release(FPlayer);
  end;

  if FMedia <> nil then
    libvlc_media_release(FMedia);

  if FVLC <> nil then
    libvlc_release(FVLC);
end;

@mrmarman hocam ellerinize sağlık.
fakat 400 e yakın dosya var bunların hepsini musteriye gondermek pek mümkün olmayacaktır.
tümünü olmasa da eleme yaparak çalıştıran kısımları filtrelersiniz.

Plugin olarak web stream vs her şeyi kapsayan bir yapı vlc.

Dediğim gibi format uyumu çözümü odaklı ve ücretsiz olan, ilave olarak video format konusunda minimal bilgiyle en uygun çözüm bu.