Delphi formu içinde youtube videosu oynatma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Delphi formu içinde youtube videosu oynatma

Mesaj gönderen adelphiforumz »

S.A.

Delphi formu içerisidnen youtube yüklenmiş videoyu nasıl izeletebilirim

Teşekkürler
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen Lord_Ares »

delphide webbrowser bileşenini forma ekleyerek youtube bağlanıp dilediğin videoyu izletebilirsin. Örnek olması açısındaan
1.yöntem
Delphi de bileşen (component) çubuğundan internet sekmesindeki webbrowser dan bir adet forumuna ekle ve bir buttonun onclik kısmına webbrowser1.navigate( ' www.youtube.com ') yaz. programı çalıştırdığında buttona tıklarsan youtube sayfasını açtığını ve videoya tıkladığında izleyebildiğini göreceksin. Direk youtuba değilde youtubedeki videoyu açmak istersen videonun adresini kodda değiştirerek ekle veya başka buttona koy.
2. yöntem
ilgili video oynatıcıların(flashplayer gibi ) ActiveX leri kullanarak youtubeyi göstermeden oradaki videoyu direk izletebilirsin
bu biraz karışık ama bir saat kadar uğraşırsan olayı kolayca yapabilirsin.
dreampower
Üye
Mesajlar: 23
Kayıt: 06 Tem 2009 04:27

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen dreampower »

Söyle bir yol daha önerebilirim embed kodunu al videonun bilgisayarda kaydet html dosyası oluşturup o dosyayı açmayı dene programda ;)
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen G.Arkas »

Webbrowser a gerek yok. Shockwave flash ile Activex ten yükleyip kullanabilirsin.
Resim
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen adelphiforumz »

WebBorows olarak çalıştırdığımda youtube sayfasının tamamı çıkıyor
benim yapmaya çalıştığım sadece videonun görünmesi ve oynatılması

eğer yanlış yapmadı isem ShochWare ile yaptığımdada illaki swf uzantılı dosya istiyor
buradaki amaç kişi videoyu program içerisinden youtube yüklenmiş olanı görmesi
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen mrmarman »

Merhaba...

* Daha önce benzer bir ihtiyacım olmuştu. Kendime hazırladığım procedure aşağıda. Umarım işinizi görür.

* Forma bir adet TWebbrowser koyun, boyutu form ile genişleyebilir de yapabilirsiniz, video penceresini de autosize olacak şekilde ayarladım. :)

:idea: Videonun adres kodunu, hangi Webbrowser nesnesi olduğunu ve AutoPlay parameteresi ile TRUE verirseniz video yüklenir yüklenmez çalışacak şekilde belirtmek yetiyor.

* Sağ Mouse tıklayınca açılan menüleri de kapatmıştım ama burada gerekli mi bilemedim. Onun için forma bir tane de ApplicationEvents eleyip sağ Mouse (ama WebBrowser üzerindeki olanları) yakalayıp handled etmek yeterli oluyor. Belki bu başlığı okuyanlardan ihtiyacı duyan olur.

(Not:Uses ActiveX eklemeyi unutmayın) :idea:


Kullanımı Şöyle

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  YouTube( 'bqiBdo22mrg', WebBrowser1, True );
end;
Procedure içeriği aşağıdaki şekilde

Kod: Tümünü seç

Procedure YouTube( VideoCode: String; WebBrowser:TWebBrowser; AutoPlay:Boolean );
var
  aStream    : TMemoryStream;
  strIcerik  : String;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
  Application.ProcessMessages;

  strIcerik := ''
            + '<html><body>'
            + '<div id="resizable" class="resizable" style="width:100%; height:100%; border:solid gray 1px" class="ui-widget-content"> '
            + '<object class="video" style="height: 100%; width: 100%;">'
            + '  <embed src="http://www.youtube.com/v/'
            +      VideoCode + '&hl=en_US&feature=player_embedded&version=3&autoplay=1" '
            + '    type="application/x-shockwave-flash"'
            + '    allowfullscreen   ="true"'
            + '    allowScriptAccess ="always"'
            + '    width="100%" height="100%" '
            + '  </embed> '
            + '</object> '
            + '</body></html> ';

  if Assigned(WebBrowser.Document) then
  begin
    aStream := TMemoryStream.Create;
    try
      aStream.WriteBuffer(Pointer(strIcerik)^, Length(strIcerik));
      aStream.Seek(0, soFromBeginning);
      // NOT: uses'a ActiveX eklenecek... IPersistStreamInit için...
      (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aStream));
    finally
      aStream.Free;
    end;
  end;
end;
Resim
Resim ....Resim
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen Lord_Ares »

Mrmarman hocam, bu örneğinizi kullanmak istedim fakat çalıştıramadım. Sanırım sorun youtube tarafında kod değişikliği. Paylaştığınız kod kısmını youtube göre güncellemek istedim dedim fakat html kodları arasında hangi bölümü aldığınızı anlayamadım, youtube tarafında bulamadım. Bu konuda yardımcı olabilirmisiniz. Çok teşekkürler Saygılarımla
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen mrmarman »

Emin misin hocam, aşağıdaki şekilde hiç değişiklik yapmadan kurdum çalıştı....
Sistemindeki FlashPlayer eklentini tazelemen gerekiyor olabilir mi ?

Kod: Tümünü seç

Uses ActiveX;

Procedure YouTube( VideoCode: String; WebBrowser:TWebBrowser; AutoPlay:Boolean );
var
  aStream    : TMemoryStream;
  strIcerik  : String;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
  Application.ProcessMessages;

  strIcerik := ''
            + '<html><body>'
            + '<div id="resizable" class="resizable" style="width:100%; height:100%; border:solid gray 1px" class="ui-widget-content"> '
            + '<object class="video" style="height: 100%; width: 100%;">'
            + '  <embed src="http://www.youtube.com/v/'
            +      VideoCode + '&hl=en_US&feature=player_embedded&version=3&autoplay=1" '
            + '    type="application/x-shockwave-flash"'
            + '    allowfullscreen   ="true"'
            + '    allowScriptAccess ="always"'
            + '    width="100%" height="100%" '
            + '  </embed> '
            + '</object> '
            + '</body></html> ';

  if Assigned(WebBrowser.Document) then
  begin
    aStream := TMemoryStream.Create;
    try
      aStream.WriteBuffer(Pointer(strIcerik)^, Length(strIcerik));
      aStream.Seek(0, soFromBeginning);
      // NOT: uses'a ActiveX eklenecek... IPersistStreamInit için...
      (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aStream));
    finally
      aStream.Free;
    end;
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  YouTube( 'tLkgcvOrpSQ', WebBrowser1, True );
end;
Resim
Resim ....Resim
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen thelvaci »

Merhaba, Muharrem beyin koduna ilave bazı değişiklikler ile sanırım olumlu bir sonuç elde edebilirsiniz. Aşağıda yapılan değişiklikleri görebilirsiniz.

Kod: Tümünü seç

Procedure YouTube( VideoCode: String; WebBrowser : TWebBrowser; AutoPlay:Boolean );
var
  strIcerik  : String;
  sStream   : TStringStream;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
  Application.ProcessMessages;

  strIcerik := ''
            + '<html><body>'
            + '<iframe width="854" height="510" src="https://www.youtube.com/embed/%EMBED%" frameborder="0" allowfullscreen></iframe>'
            + '</body></html> ';

  strIcerik := StringReplace(strIcerik, '%EMBED%', VideoCode, [rfReplaceAll]);


  if Assigned(WebBrowser.Document) then
  begin
    sStream := TStringStream.Create;
    try
      sStream.WriteString(strIcerik);
      sStream.Position := 0;
      // NOT: uses'a ActiveX eklenecek... IPersistStreamInit için...
      (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(sStream));
    finally
      sStream.Free;
    end;
  end;
end;
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen Lord_Ares »

Arkadaşlarım hepinizden özür diliyorum. İşin derinini düşüneyim derken basit olanı unutma gafletinde bulundum. Chorome tarayıcı kullanıyorum bazı siteler Flashplayer durma hatası veriyordu. Sebebi ise Webkit tabanlı tarayıcılarda flashplayer eklentisi ile explorerda kurulu olanla bir nevi çakışmasından kaynaklı olduğunu öğrenmiştim. Dolayısı ile flash player explorerdan kaldırmış chorome da ki eklenti ile kullanıyordum. Hata benim tarafımda tekrardan çok özür diliyorum :)) üstelik bir gündür de neden çalışmıyor diye yapmadığım şey kalmamıştı
Saygılarımla Affola ..
Thelvacı hocam bilgi için teşşekkür ediyorum hemen onuda inceleyip farka bakacağım.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen Lord_Ares »

Çok ilginçtir ki Delphi7 ile bu kodu çalıştırabiliyorum. Aynı kodu kopyalayıp Xe6 da deniyorum boş sayfa geliyor. Hadi bakalım çık işin içinden çıkabilirsin :))
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen mrmarman »

XE8'de çalışıyor. Şöyle bir şey dene...
Bazen eski otomobiller gibi explorer'i iteklemek gerekebiliyor... :lol:
Tecrübe ile sabittir bazı sistemlerde flash eklentisini tetiklemek için illaki de Explorer açmak gerekebiliyor.
Bunu da hiç bir işe yaramayan bir satır ile halledebiliyoruz. Bu satırı kaldırınca çalışmıyor ancak ekleyince çalışıyor. Bunu da normal explorer penceresinde çalışan ama delphi yakasında çalışmayan bir script nedeniyle keşfetmiştim. Anlamsız ama iş görüyor. Bir dene bakalım sendeki de aynı sebeple mi çalışmıyormuş ?

Kod: Tümünü seç

    IEpp := CreateOleObject('InternetExplorer.Application');
satırını ekleyip create edilen bu Explorer'i hiç kullanmaya gerek kalmaksızın sonunda free etmek, Flash eklentisini tetiklemeye yetiyor.

Kod: Tümünü seç

Uses ComObj, ActiveX;

Procedure YouTube( VideoCode: String; WebBrowser : TWebBrowser; AutoPlay:Boolean );
var
  strIcerik  : String;
  sStream    : TStringStream;
  IEpp       : OleVariant;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
  Application.ProcessMessages;

  strIcerik := ''
            + '<html><body>'
            + '<iframe width="854" height="510" src="https://www.youtube.com/embed/%EMBED%" frameborder="0" allowfullscreen></iframe>'
            + '</body></html> ';

  strIcerik := StringReplace(strIcerik, '%EMBED%', VideoCode, [rfReplaceAll]);

  if (VarIsEmpty(IEpp)) then
  begin
    IEpp := CreateOleObject('InternetExplorer.Application');
    WebBrowser.Silent := True;

    if Assigned(WebBrowser.Document) then
    begin
      sStream := TStringStream.Create;
      try
        sStream.WriteString(strIcerik);
        sStream.Position := 0;
        // NOT: uses'a ActiveX eklenecek... IPersistStreamInit için...
        (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(sStream));
      finally
        sStream.Free;
      end;
    end;

    IEpp.Quit;
    IEpp := UnAssigned;
  end;
end;
Resim
Resim ....Resim
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 03:09
Konum: Azerbaycan, Bakü
İletişim:

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen AliZairov »

Merhaba. Buda bir seçenek XE8 çalışıyor denedim.

Kod: Tümünü seç

uses ActiveX;

procedure WBLoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
var
  SL: TStringList;
  MS: TMemoryStream;
begin
  WebBrowser.Navigate('about:blank') ;
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
  Application.ProcessMessages;
  if Assigned(WebBrowser.Document) then
  begin
    SL := TStringList.Create;
    try
      MS := TMemoryStream.Create;
      try
        SL.Text := HTMLCode;
        SL.SaveToStream(MS);
        MS.Seek(0, 0);
        (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(MS));
      finally
        MS.Free;
      end;
    finally
      SL.Free;
    end;
  end;
end;

procedure GetPlayer(URL: string; WebBrowser: TWebBrowser);
var
  SL: TStringList;
begin
  Application.ProcessMessages;
  SL := TStringList.Create;
  try
    SL.Add('<iframe width="440" ');
    SL.Add('height="250" ');
    SL.Add('src="' + StringReplace(URL, 'watch?v=', 'embed/', [rfReplaceAll, rfIgnoreCase]));
    SL.Add('" frameborder="0" ');
    SL.Add('allowfullscreen></iframe>');
    WBLoadHTML(WebBrowser, SL.Text);
  finally
    SL.Free;
  end;
end;
Kullanımı:

Kod: Tümünü seç

GetPlayer(Edit1.Text, Webbrowser1);
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen Lord_Ares »

Yeni bir bilgisayar imkanım vardı onu açıp yeni bir windows kurdum. Delphiyi kurup hemen deniyorum. ikisi arasındaki farkı gözlemleyip bilgi vereceğim Çok teşekkürler..
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Delphi formu içinde youtube videosu oynatma

Mesaj gönderen thelvaci »

Muarrem beyin göndermiş olduğu kod üzerinde yaptığım ufak değişikliği Windows 7 64 bit işletim sistemi üzerinde Delphi XE5 ile denemiş ve olumlu sonuç almıştım. Siz olumlu bir netice alamadınız mı ?
Cevapla