![]() |
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. |
AW: VCL Twebbroser mit YouTube I-Frame API
|
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.
|
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? ![]() ![]() ![]() |
AW: VCL Twebbroser mit YouTube I-Frame API
Zitat:
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. :? |
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... |
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. |
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 |
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?
|
AW: VCL Twebbroser mit YouTube I-Frame API
Das mit dem Thread klingt interessant. Werd ich morgen gleich testen und berichten. Danke!
|
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:
Diese möchte ich in einen Thread packen. Dazu habe ich mir folgenden Type gebaut
procedure youtube_abspielen(pfad:String)
Code:
Die Excecute macht folgendes
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;
Code:
Im Programm dachte ich mir rufe ich das folgendermaßen auf:
procedure TYoutube.Execute;
begin try TProc(pfad); Except end; end;
Code:
Es hakt soweit ich das beurteilen kann bei der Zuweiseung der Procedure an die Member. :?
MyYoutube := TYoutube.Create(False);
MyYoutube.TProc := youtube_abspielen('Hier ist das große Fragezeichen'); //Hier klappt es nicht MyYoutube.Param1 := 'Ein_String'; PS: Wenn ich der Procedure einen String mitgebe kommt folgende Fehlermeldung: E2010 Incompatible types: 'Procedure of object' and 'procedure, untyped pointer or untyped parameter' |
AW: VCL Twebbroser mit YouTube I-Frame API
Erledigt: habs gerade selber gesehen
Richtig ist nur die procedure zu übergeben: Zitat:
|
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? |
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: |
AW: VCL Twebbroser mit YouTube I-Frame API
Zitat:
Falls dem so ist. Verwende DirectX und deine Probleme sind Vergangenheit. ( ![]() Siehe Pic. gruss |
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. |
AW: VCL Twebbroser mit YouTube I-Frame API
Zitat:
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.. ![]() Ist zwar nicht YouTube aber fast das gleiche. gruss |
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.
|
AW: VCL Twebbroser mit YouTube I-Frame API
Zitat:
Hilft nur probieren. gruss |
AW: VCL Twebbroser mit YouTube I-Frame API
|
AW: VCL Twebbroser mit YouTube I-Frame API
Zitat:
Wird denn Zitat:
grus |
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...
|
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. ![]() 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. |
AW: VCL Twebbroser mit YouTube I-Frame API
Vielleicht hilft dir der
![]() |
AW: VCL Twebbroser mit YouTube I-Frame API
Zitat:
Besteht das immer noch? gruss |
AW: VCL Twebbroser mit YouTube I-Frame API
Zitat:
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:
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. |
AW: VCL Twebbroser mit YouTube I-Frame API
Also was denn nun!
Zitat:
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. ![]() gruss |
AW: VCL Twebbroser mit YouTube I-Frame API
Zitat:
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. |
AW: VCL Twebbroser mit YouTube I-Frame API
Zitat:
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 |
AW: VCL Twebbroser mit YouTube I-Frame API
Zitat:
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. |
AW: VCL Twebbroser mit YouTube I-Frame API
Zitat:
gruss |
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 19:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz