Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   VCL Twebbroser mit YouTube I-Frame API (https://www.delphipraxis.net/199345-vcl-twebbroser-mit-youtube-i-frame-api.html)

Rolandrevolvermann 17. Jan 2019 09:23

VCL Twebbroser mit YouTube I-Frame API
 
Hallo Zusammen!
gerade angemeldet und schon eine Frage xD
Ich bin erst seit kurzem projektbezogen in der Delphi Welt.
Plan: Im TWebbroser eine html mit dem YouTube I-Frame API zu laden. Also Videos über die ID im Browser anzeigen.
Das funktioniert auch alles bis auf die Qualität. Die Videos ruckeln alle. Ich tippe auf ein Cache Problem.
Gibt es eine Möglichkeit hier zu optimieren. bis jetzt habe ich ganz naiv die html lokal über Browser.Navigate(url) geladen. IO zugriffe kann ich ausschließen, da auch die URL direkt im Twebbrowser ruckelt. Nur wenn ich das ganze nicht über delphi lade läuft es flüssig.
Hat jemand einen Tipp in welche Richtung ich suchen muss?
Vielen Dank im Voraus.

Ergänzung: Der TWebbrowser gibt sich als IE11 on Windows 8 aus.

TiGü 17. Jan 2019 09:31

AW: VCL Twebbroser mit YouTube I-Frame API
 
Probiere mal das:

https://www.delphipraxis.net/180919-...ml#post1264205

Rolandrevolvermann 17. Jan 2019 11:52

AW: VCL Twebbroser mit YouTube I-Frame API
 
Danke für den Link. Das wird schon gemacht. Der Browser wird auch als IE11 erkannt. Also das ist nicht das Problem. es scheint, als ob der Twebbrowser ein Problem mit der Wiedergabe von Youtube-Videos (Ruckeln; sieht aus wie das damilige 24p Problem der ersten Blu-Ray Player; nur häufiger) hat. Der IE11 hat das Problem nicht. Es muss also an der Delphi-Komponente oder einer fehlerhaften Implementierung meinerseits liegen.

Delphi.Narium 17. Jan 2019 12:32

AW: VCL Twebbroser mit YouTube I-Frame API
 
Der TWebBrowser kappselt den IE, ist also eigentlich nix anders als der IE in 'ner delphitauglischen Verpackung.

Sind da noch irgendwelche brauchbaren Erkenntnisse bei?
https://stackoverflow.com/questions/...67121#34267121
https://www.delphipraxis.net/194522-...er-10-1-a.html
https://stackoverflow.com/questions/...ideo-on-delphi

Rolandrevolvermann 17. Jan 2019 13:16

AW: VCL Twebbroser mit YouTube I-Frame API
 
Zitat:

Der TWebBrowser kappselt den IE, ist also eigentlich nix anders als der IE in 'ner delphitauglischen Verpackung.
Ja, so hab ich das auch verstanden; Darum bin ich auch um so mehr verwundert, dass es diese Unterschiede gibt.

Danke für die Links, aber leider keine neuen Erkenntnisse.

Gerade nochmal getestet:
Rufe ich irgendein Youtube Video im IE11 auf läuft es flüssig.
Rufe ich das selbe Video über TWebbrowser auf -> ruckelt.

:?

Rolandrevolvermann 17. Jan 2019 13:28

AW: VCL Twebbroser mit YouTube I-Frame API
 
Jetzt wird es weird:
Ich habe gerade eine kliene Testapplikation erstellt: Nur ein TWebbrowser auf einer Form und darin die Youtube Seite geladen -> funktioniert einwandfrei.
Also liegt das Problem irgendwo in unserer Anwednung ...Sehr seltsam...

Delphi.Narium 17. Jan 2019 14:11

AW: VCL Twebbroser mit YouTube I-Frame API
 
Timer, viele Ereignisse (nicht nur sowas wie OnStatus beim TWebBrowser), viele Application.ProcessMessages?

Kann alles ein "Störgrund" sein.

Rolandrevolvermann 17. Jan 2019 14:28

AW: VCL Twebbroser mit YouTube I-Frame API
 
Also in meiner Yotube Funktion nicht, aber natürlich im Hauptprogramm, welches meine funktion aufruft, einiges.
Gerade das application.processmessages kommt schon oft vor und meiner Meinung nach scheint das nach Recherche gar nicht so sinnvoll zu sein.
PS: Die Frage ist nun natürlich: Wie finde ich am effektivsten heraus, was mir da reinpfuscht? aber das ist nun denke ich meine Aufgabe xD

ConnorMcLeod 17. Jan 2019 15:40

AW: VCL Twebbroser mit YouTube I-Frame API
 
Vllt kannst Du das Wiedergabefenster in einen Thread tun und Dich auf diese Weise aus der Loop nehmen?

Rolandrevolvermann 17. Jan 2019 16:22

AW: VCL Twebbroser mit YouTube I-Frame API
 
Das mit dem Thread klingt interessant. Werd ich morgen gleich testen und berichten. Danke!

Rolandrevolvermann 18. Jan 2019 09:52

AW: VCL Twebbroser mit YouTube I-Frame API
 
Ich habe mich nun mal in das Thread Thema bzgl. Delphi eingelesen.
Mein Plan:
Ich habe z.B. eine procedure
Code:
procedure youtube_abspielen(pfad:String)
Diese möchte ich in einen Thread packen. Dazu habe ich mir folgenden Type gebaut
Code:
Type
  TYoutube = class(TThread)
  TProc: procedure(const AStr: String) of object;
private
  Pfad : String;
  Funktion : TProc;
protected
  procedure Execute(); override;
public
  property Param1 : String read Pfad write Pfad;
  property Proc : TProc read Funktion write Funktion;
End;
Die Excecute macht folgendes
Code:
procedure TYoutube.Execute;
begin
  try
    TProc(pfad);
  Except
  end;
end;
Im Programm dachte ich mir rufe ich das folgendermaßen auf:
Code:
MyYoutube := TYoutube.Create(False);
MyYoutube.TProc := youtube_abspielen('Hier ist das große Fragezeichen'); //Hier klappt es nicht
MyYoutube.Param1 := 'Ein_String';
Es hakt soweit ich das beurteilen kann bei der Zuweiseung der Procedure an die Member. :?

PS: Wenn ich der Procedure einen String mitgebe kommt folgende Fehlermeldung:
E2010 Incompatible types: 'Procedure of object' and 'procedure, untyped pointer or untyped parameter'

Rolandrevolvermann 18. Jan 2019 09:58

AW: VCL Twebbroser mit YouTube I-Frame API
 
Erledigt: habs gerade selber gesehen
Richtig ist nur die procedure zu übergeben:
Zitat:

MyYoutube.TProc := youtube_abspielen;

TiGü 18. Jan 2019 10:00

AW: VCL Twebbroser mit YouTube I-Frame API
 
Überschreibe mal den Constructor und übergebe dir die Callback darüber. Ist sauberer und weniger Fehleranfällig.
Das ist nur ein Beispiel, dass heißt nicht wirklich TProc, oder?

Rolandrevolvermann 18. Jan 2019 10:06

AW: VCL Twebbroser mit YouTube I-Frame API
 
Danke für den Hinweis.
Ja, das ist nur ein Beispiel für mich zum testen gewesen.
Leider bringt das Auslagern der Youtube Funktion keine Besserung der Abspielqualität des YouTube Videos. Aber einen Versuch wars Wert und so kann ich zumindest in Delphi Threads erstellen :lol:

EWeiss 18. Jan 2019 10:25

AW: VCL Twebbroser mit YouTube I-Frame API
 
Zitat:

Leider bringt das Auslagern der Youtube Funktion keine Besserung der Abspielqualität des YouTube Videos.
Ich weis ja nicht um was es dir geht.. Nur um YouTube Videos abzuspielen?

Falls dem so ist.
Verwende DirectX und deine Probleme sind Vergangenheit. (https://youtu.be/h2bhFlkylPE)
Siehe Pic.

gruss

Rolandrevolvermann 18. Jan 2019 10:48

AW: VCL Twebbroser mit YouTube I-Frame API
 
@EWeiss
Ausgangsproblem war/ist, dass ein im TWebbrowser abgespieltes Youtube Video in unserer Anwendung ruckelt bzw nicht flüssig lüuft. Im normalen Browser schon. Ich konnte das ganze eingrenzen bzw. habe herausgefunden, dass das kein Problem vom Twebbrowser ist, sondern von unserer Anwendung.
Von 'Delphi.Narium' kam der Hinweis, dass "Timer, viele Ereignisse (nicht nur sowas wie OnStatus beim TWebBrowser), viele Application.ProcessMessages" ein "störgrund" sein können.
Von ConnorMcLeod kam dann der hinweis, das ganze in einen thread auszulagern. Das fand ich recht sinnvoll und habe es auch getestet. Leider ohne Erfolg.

EWeiss 18. Jan 2019 10:58

AW: VCL Twebbroser mit YouTube I-Frame API
 
Zitat:

YouTube I-Frame API
Ich behaupte das diese API nicht mehr zuverlässig arbeitet, denn es ist nicht gewollt das YouTube Videos in eigene Anwendungen abgespielt werden können.
Von daher wenn das eine Bedingung für euer Programm ist.. sorry dann vergesst es.
Das wird so wohl nichts werden ohne extra Filter.

Ich kann hingegen 4K Videos ohne Probleme abspielen mit entsprechender Internet Verbindung natürlich.. 30MB in der Sekunde sollten es dann schon sein.
Versuche das hier mal als Beispiel.. https://vimeo.com/channels/4k/119029890 mit der Auflösung 4K.
Ist zwar nicht YouTube aber fast das gleiche.


gruss

Rolandrevolvermann 18. Jan 2019 11:04

AW: VCL Twebbroser mit YouTube I-Frame API
 
Doch,dass funktioniert. In einem eigenen neuen Testprogramm (Twebbrowser) funktioniert das Ganze wunderbar. Es wird eine html plus ein bisschen javascript mit der youtube iframe api geladen. das geht ohne Probleme. An die videos kommt man per ID. Alles kein Problem. Leider scheinen Seiteneffekte unserer Anwendung die Wiedergabe zu stören.

EWeiss 18. Jan 2019 11:05

AW: VCL Twebbroser mit YouTube I-Frame API
 
Zitat:

Zitat von Rolandrevolvermann (Beitrag 1423530)
Doch,dass funktioniert. In einem eigenen neuen Testprogramm (Twebbrowser) funktioniert das Ganze wunderbar. Es wird eine html plus ein bisschen javascript mit der youtube iframe api geladen. das geht ohne Probleme. An die videos kommt man per ID. Alles kein Problem. Leider scheinen Seiteneffekte unserer Anwendung die Wiedergabe zu stören.

OK dann :)
Hilft nur probieren.

gruss

Rolandrevolvermann 18. Jan 2019 11:06

AW: VCL Twebbroser mit YouTube I-Frame API
 
Falls es jemand interessiert: Das ist die API
https://developers.google.com/youtub...eference?hl=de

EWeiss 18. Jan 2019 11:35

AW: VCL Twebbroser mit YouTube I-Frame API
 
Zitat:

Zitat von Rolandrevolvermann (Beitrag 1423532)
Falls es jemand interessiert: Das ist die API
https://developers.google.com/youtub...eference?hl=de

Interessant ;)
Wird denn
Zitat:

Der Endnutzer muss einen Browser verwenden, der die HTML5-postMessage-Funktion unterstützt.
HTML5 unterstützt von der VCL TWebbrowser Komponente?

grus

Rolandrevolvermann 18. Jan 2019 14:53

AW: VCL Twebbroser mit YouTube I-Frame API
 
Ja, TWebBrowser ist ja nur ein verpackter IE. Und wenn man forciert, dass der IE 11 benutzt wird dann wird auch HTML5 unterstützt. Ab welcher IE Version HTML5 unterstützt wird weiß ich auswendig jetzt leider nicht...

Bernhard Geyer 19. Jan 2019 08:21

AW: VCL Twebbroser mit YouTube I-Frame API
 
Das Problem mit dem TWebBrowser-Control ist, das MS meint diese Standardmäßig in einem über 10 Jahre alten Modus des IE7 zu betreiben.

Und mit jeder neuen Version (und auch im Bereich Touch-Support) ergänzt MS ein paar Registry-Schalter die man setzen muss, damit die Anwendung wie ein IE11 mit allen Features wirkt.

https://blog.malwarebytes.com/101/20...ser_emulation/


Bei uns läuft der IE mittlerweile sogar in einem Modus, bei dem die Grafikkarte zu Beschleunigung verwendet wird.

Mann kann eigentlich nur über MS fluchen wie sie verzweifelt Versuchen Altkompatiblität zu gewährleisten, aber praktisch zu 99% nur Probleme damit verursachen.

Andreas L. 19. Jan 2019 11:29

AW: VCL Twebbroser mit YouTube I-Frame API
 
Vielleicht hilft dir der EmbeddedIE.

EWeiss 19. Jan 2019 12:10

AW: VCL Twebbroser mit YouTube I-Frame API
 
Zitat:

das MS meint diese Standardmäßig in einem über 10 Jahre alten Modus des IE7 zu betreiben.
Da gab es doch beim IE7 das Problem mit der ieframe.dll
Besteht das immer noch?

gruss

Bernhard Geyer 19. Jan 2019 12:24

AW: VCL Twebbroser mit YouTube I-Frame API
 
Zitat:

Zitat von Andreas L. (Beitrag 1423594)
Vielleicht hilft dir der EmbeddedIE.

Für D6 hilft das.
Unter neueren Delphi-Versionen stört diese Ableitung eher.
Wir haben sie mittlerweile rausgeschmissen und arbeiten mit einer eigenen Ableitung.
TWebBrowser von D 10.2/10.3 ist um einige besser noch als die alte D6-Implementierung welche die 1-2 Methoden die EmbeddedWB bracht und es noch nicht gibt nachrüstet.


Zitat:

Zitat von EWeiss (Beitrag 1423596)
Zitat:

das MS meint diese Standardmäßig in einem über 10 Jahre alten Modus des IE7 zu betreiben.
Da gab es doch beim IE7 das Problem mit der ieframe.dll
Besteht das immer noch?

Wenn intreessiert noch IE7
Unser Mindest-OS das wir unterstützen ist Windows Vista. Dort ist mindesten schon der IE8 dabei.
Die Abkündigung von XP und der Ausbau der Kompatibilität vor 2 Jahren (Mittlerweile kommt Meldung beim Start das wir XP nicht mehr unterstützten) hat keinen unserer Kunden interessiert (bzw niemand hat sich gemeldet).
Also ist ein IE7 nur noch im Rahmen von Computergeschichte relevant aber nicht mehr im realen Alltag.

EWeiss 19. Jan 2019 12:30

AW: VCL Twebbroser mit YouTube I-Frame API
 
Also was denn nun!
Zitat:

alten Modus des IE7 zu betreiben.
Wird er im alten Modus betrieben oder nicht.
Falls nicht was versuchst du uns hier mitzuteilen?

Wenn die Komponente nur den Anschein erweckt der IE11 zu sein in der Wirklichkeit aber der IE7 ist dann spielt das sehr wohl eine rolle.
Oder was wolltest du uns mit dem Beitrag vermitteln.

gruss

Bernhard Geyer 19. Jan 2019 12:46

AW: VCL Twebbroser mit YouTube I-Frame API
 
Zitat:

Zitat von EWeiss (Beitrag 1423600)
Also was denn nun!
Zitat:

alten Modus des IE7 zu betreiben.
Wird er im alten Modus betrieben oder nicht.
Falls nicht was versuchst du uns hier mitzuteilen?

Wenn die Komponente nur den Anschein erweckt der IE11 zu sein in der Wirklichkeit aber der IE7 ist dann spielt das sehr wohl einen rolle.
Oder was wolltest du uns mit dem Beitrag vermitteln.

gruss

Also Standardmäßig gibt sich der IE erstmal als IE7 aus.
In wieweit hier dann uralt-Bugs und Probleme noch dabei sind - Keine Ahnung.
Wir betreiben den IE immer (!) im IE11-Modus mit allen für uns relevanten Aktivierungen (wie z.B. OpenGL mit GPU-Beschleunigung).
Ob nun der IE11 im IE7-Modus noch über die Delphi-Integration ein Problem hat - Keine Ahnung.

EWeiss 19. Jan 2019 12:55

AW: VCL Twebbroser mit YouTube I-Frame API
 
Zitat:

In wieweit hier dann uralt-Bugs und Probleme noch dabei sind - Keine Ahnung.
Dann war meine frage berechtigt.
Denn ein emulierter Browser IE7 der vorgibt der IE11 zu sein kann ohne weiteres immer noch den ieframe.dll bug beinhalten.

Das war meine frage ;)
Damit ich mit VB6 das "Microsoft Webbrowser Control" verwenden kann muss ich diese Keys setzen.
Dieses baut auch auf den IE7 auf (wobei hier uninteressant ist welche IE Version letztendlich emuliert wird.)

Code:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{8856F961-340A-11D0-A96B-00C04FD705A2}]
@="Microsoft Web Browser"

[HKEY_CLASSES_ROOT\CLSID\{8856F961-340A-11D0-A96B-00C04FD705A2}\InProcServer32]
@="C:\\Windows\\system32\\shdocvw.dll"

[HKEY_CLASSES_ROOT\CLSID\{8856F961-340A-11D0-A96B-00C04FD705A2}\ToolboxBitmap32]
@="C:\\Windows\\system32\\shdocvw.dll, 257"

gruss

Bernhard Geyer 19. Jan 2019 13:19

AW: VCL Twebbroser mit YouTube I-Frame API
 
Zitat:

Zitat von EWeiss (Beitrag 1423604)
Denn ein emulierter Browser IE7 der vorgibt der IE11 zu sein kann ohne weiteres immer noch den ieframe.dll bug beinhalten.

Umgekehrt. Du hast den IE11 der ausgiebt ein IE7 zu sein.

Wird auch für dein antikes VB6-Programm gelten.

Der Zugriff erfolgt über diverse Interfaces, welche neuere Delphi-Versionen in höheren Versionsständen des Interfaces ansprechen.
Es kann also sein das D10.2 kein Problem hat da es die neuere Interface-Inkarnation verwendet und du mit VB6 über die uralte Version auf den installierten IE zugreifst.

EWeiss 19. Jan 2019 14:07

AW: VCL Twebbroser mit YouTube I-Frame API
 
Zitat:

Umgekehrt. Du hast den IE11 der ausgiebt ein IE7 zu sein.
Ahh ok dann hat sich das erledigt.

gruss

Rolandrevolvermann 21. Jan 2019 07:51

AW: VCL Twebbroser mit YouTube I-Frame API
 
Ich bin mir ziemlich sicher, dass die TWebBrowser Komponente nicht das Problem ist, denn in meiner kleinen MINI-APP läuft alles "geschmeidig".


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz