Entwickler-Ecke
WinForms - Youtube-Videos anzeigen
Palladin007 - So 19.05.13 23:16
Titel: Youtube-Videos anzeigen
Moin,
ich möchte ein Youtube-Video in eine Anwendung mit einbauen. Nach ein bisschen Suche bei Google habe ich den Tipp gefunden, einen HTML-String mit dem Webbrowser anzuzeigen, der dann eben das Video darstellen soll.
Das hab ich jetzt mit diesem Code versucht:
C#-Quelltext
1:
| "<embed src=" + videoURL + "\" type=\"application/x-shockwave-flash\" allowfullscreen=\"true\" width=\"" + browser.Width + "\" height=\"" + browser.Height + "\"></embed>" |
in HTML:
HTML-Dokument
1:
| <embed src="VIDEO-URL" type="application/x-shockwave-flash" wmode="transparent" allowfullscreen="true" width=" width="BROWSRER-BREITE" height="BRWOSER-HÖHE"> </embed> |
Bisher wurde nie das angezeigt, was ich wollte. Immer hab ich gedacht, ich hab irgendetwas falsch gemacht, bis ich auf die Idee kam, das ganze mal in eine html-Datei zu speichern (natürlich mit gültigen Angaben) und dann im Firefox anzuzeigen.
Es funktionierte und sah ganz genau so aus, wie ich mir das vorstelle.
Da das WebBrowser-Control von .NET ja auf dem Internet-Explorer basiert, habe ich die Datei auch mal im Internet-Explorer anzeigen lassen.
Das gleiche Ergebnis, wie in meinem Projekt.
Also ist der Internet-Explorer (und damit das WebBrowser-Control, das darauf aufbaut), nicht in der Lage, Youtube-Videos korrekt anzuzeigen.
Nun hab ich nach einer anderen Möglichkeit gesucht, am naheliegendsten ist der Versuch, einen anderen Browser zu verwenden, also hab ich danach gesucht und auch viel gefunden. Allerdings wollte mir niemand den Quellcode geben, oder ich habe es übersehen.
Für mein Projekt ist leider sehr wichtig, dass es ohne zusätzliche dll-Dateien auskommt, die mit installiert werden müssen. Es muss alles komplett in der exe vorhanden sein, keine extra Dateien. Da komme ich auch nicht drum herum, also brauche ich eine weitere Möglichkeit.
Fündig geworden bin ich dann
hier [
http://www.mmorpg-core.com/forum/c/youtube-videos-programm-einbinden-12040.html].
Im letzten Post werden zwei Klassen gezeigt, mit denen das scheinbar möglich sein soll, aber mir ist weder klar, wie, noch kapiere ich, was da eigentlich gemacht wurde.
Windows-Forms ist das jedenfalls nicht und WPF auch nicht, also bleibt ja nur ASP.NET, oder irre ich mich da?
Aber wie bekomme ich das nun zum Laufen und kann es auch in C# übernehmen, dass ich mein eigenes Control bauen und verwenden kann?
Das einzige, was mir noch einfallen würde, wäre der Media-Player, so, wie
hier [
http://www.youtube.com/watch?v=Tp4cdv3cRnY] gezeigt, allerdings ist um dem Video dann immerzu dieser nervige Media-Player zu sehen.
Komplett downloaden möchte ich das Video nicht, zumindest nicht als Datei.
Oder hat vielleicht jemand eine andere Idee, wie ich ein Youtube-Video anzeigen kann?
Ich möchte das Video so einbinden, wie in HTML, dass ich auch die Buttons von Youtube sehen und verwenden kann.
Wichtig ist dabei einfach nur, dass ich auch jeglichen Quellcode brauche, da ich keine dll verwenden möchte.
Ich freue mich über viele gute Ratschläge ^^
Grüße
PS:
Wen es interessiert:
Ich möchte einen Minecraft-Launcher in C# (und wenn ich es schaffe, danach auch in Java) bauen, der die Möglichkeit bietet, RAM einzustellen, zwischen Minecraft, Tekkit, oder einem eigens zusammen gestellten Mod-Packet zu wechseln und sowohl News, als auch Videos (!) von der Webseite des Servers, für den das wird, anzuzeigen.
Daher keine dll, denn der Launcher soll eigenständig und alleine funktionieren können, es soll nicht immer eine dll dabei liegen und eine Installation möchte ich auch vermeiden.
Und Downloaden möchte ich das Video deshalb nicht als Datei, weil die Videos von einem Youtube-Account kommen, der regelmäßig neue Videos bringt und sollen dann auch in den News zu finden sein.
Delete - Mo 20.05.13 00:11
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007 - Mo 20.05.13 11:46
Ok, mit iframe bekomme ich jetzt auch den Player in den InternerExplorer, ABER der hat keinen FlashPlayer und ist so zurück geblieben, dass er kein HTML5 kann -.-
Aber wegen dem Projekt möchte ich keine Installation voraus setzen, also kann ich keinen FlashPlayer installieren lassen, wenn er nicht vorhanden ist. Oder kenn ich den irgendwie im Projekt mit geben lassen?
Das wäre doch eigentlich eine Idee, wenn ein Browser Flash lernen kann, warum nicht auch ein selber geschriebenes Programm mit C#?
Hab da mal etwas geschaut und
dieses [
http://www.youtube.com/watch?v=kg-z8JfOIKw] Video gefunden.
Das sieht ganz praktisch aus, allerdings ist Shockwave scheinbar nicht standardmäßig installiert. Wenn die MediaPlayer-Variante mir nicht gefällt und niemand eine andere Idee hat, werd ich das wohl machen müssen.
Edit:
Ok, ich hab es mal ausprobiert und das Ergebnis war:
1. dass beim Erstellen der Form schon Probleme auftraten, also ein CPU-Kern zu 80% ausgelastet war und die Form nicht mehr reagiert hat.
2. beim Starten der Anwendung mit dem Player zwei Kerne zu 50% ausgelastet waren.
Ich hab einen Quad-Core Prozessor von AMD mit 4,2 Ghz. Den juckt das nicht wirklich, aber nicht jeder hat einen von Haus aus übertakteten Prozessor bei sich am werkeln. Soll heißen, der Player fällt raus, da schwächere Computer sich damit garantiert aufhängen, besonders, da es ja nicht nur bei einem Video bleiben soll :/ Wenn ich da 10 Videos oder mehr haben will, dann macht sicher auch mein PC schlapp -.-
Edit2:
Gibt es keine Möglichkeit, der Form HTML5 bei zu bringen?
Es gibt ja ASP.NET, allerdings kenne ich mich da überhaupt nicht aus, aber mich würde es wundern, wenn das kein HTML5 versteht, oder?
Weiß jemand, wie ich mir damit ein Control bauen kann, mit dem ich dann in einer Forms-Anwendung HTML5-Videos abspielen kann?
Palladin007 - Mo 20.05.13 13:08
Das hab ich auch schon gesehen, aber ich blick da nicht durch :D
Hast du ein Beispiel, wie ich das verwende?
Ich wollte erst den Quellcode bei mir einfügen, wenn er ja schon dabei ist, aber kann es sein, dass das gar kein C# ist, sondern C++?
Und:
Benötigt das nicht den Chrome-Browser installiert?
jaenicke - Mo 20.05.13 14:15
Palladin007 hat folgendes geschrieben : |
| Ich wollte erst den Quellcode bei mir einfügen, wenn er ja schon dabei ist, aber kann es sein, dass das gar kein C# ist, sondern C++? |
Das ist in C++ .NET geschrieben, ja, aber du kannst das von C# genauso verwenden wie von VB.NET. Ich vermute es reicht die Assembly einzubinden.
Aber da ist doch ein Beispiel für z.B. WinForms dabei...
Palladin007 hat folgendes geschrieben : |
Und:
Benötigt das nicht den Chrome-Browser installiert? |
Nein, aber die Dateien, die dazu gehören, musst du natürlich mitliefern:
http://www.magpcss.net/cef_downloads/
Palladin007 - Mo 20.05.13 14:58
Also ist es nicht möglich, das Ganze ohne extra Dateien zu schaffen?
Ich muss es also als c++-Assembly compilieren und dann bei C# einbauen :/
Nagut, wenn das nur so geht, muss ich wohl damit klar kommen.
Ich werd das dann gleich mal ausprobieren und mich dann nochmal melden.
Bis dahin danke für die Hilfe.
Palladin007 - Mo 20.05.13 15:22
Ok, CefSharp hab ich herunter geladen und das Projekt mal geöffnet.
Resultat:
Zuerst gab es ein Haufen Meldungen wegen zu neuem .NET-Framework, also hab ich die Versionen der C#-Projekte auf 4.0 gesetzt.
Danach schien es, als könnte es funktionieren, tat es aber nicht, weil ich nach einem Versuch, ein Beispiel-Projekt für C# zu compilieren, ich von insgesamt 55 Fehlermeldungen überhäuft werde.
Irgendwelche Fehler, mit denen ich absolut nichts anfangen kann und recht häufig auch irgendwo irgendwelche Klassen fehlen.
Kann es sein, dass beim Öffnen des Projektes und konvertieren in .NET-Framework 4.0 irgendwelche Verweise verloren gegangen sind? Vielleicht die, die noch gar nicht dabei sind, weil ich die Chrom-Dateien noch nicht dabei habe?
PS:
Ich hab die UpgradeLog-Datei mal in den Anhang gepackt, da wurden nämlich einige Fehler angezeigt.
Delete - Mo 20.05.13 16:38
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007 - Mo 20.05.13 16:57
Naja, der PC ist eigentlich relativ neu, ich wüsste jetzt nicht, was das Problem sein sollte ...
Kannst du mir vielleicht mal dein Test-Projekt schicken?
Entweder ich hab da einen Fehler gemacht, oder es ist nur temporär bei mir ein Problem. Dann könnte ich das einfach weiter bauen und darauf hoffen, dass auf dem Nutzer-PC das Problem aus bleibt.
Delete - Mo 20.05.13 17:16
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007 - Mo 20.05.13 17:25
Ich hab nicht einmal eine URL angegeben xD
Aber, was mich auch schon gewundert hat, ich hab scheinbar eine andere Version, denn die Eigenschaft URL gibt es nicht, dafür aber ein Haufen Eigenschaften von sw1 bis sw9 und dann noch einige Eigenschaften, die scheinbar wichtig für das Control sind, alle mit sw beginnend.
Delete - Mo 20.05.13 17:35
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007 - Mo 20.05.13 17:49
Ach weißt du was? Wir reden von verschiedenen Steuerelementen :D
Ich meine den Shockwave-Player und du wahrscheinlich den Media-Player :D
Delete - Mo 20.05.13 17:57
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007 - Fr 24.05.13 18:49
0%?
Seltsam, warum mein PC da so krächzen muss, der ist eigentlich relativ neu und kommt mit sowas wie Battlefield 3 oder vier mal Minecraft ganz gut klar.
Ich bau mal ene kleine Test-Anwendung und schick das mal einem Freund. Wenn das bei ihm ganz gut funktioniert, weiß ich, dass es an meinem PC liegt.
jaenicke - Fr 24.05.13 19:38
Frühlingsrolle hat folgendes geschrieben : |
| 3/3: Bekomme ich ebenso keines der CefSharp Beispiele compiliert. Vielleicht wäre jaenicke so nett und könnte uns zeigen, wie es richtig geht :zwinker: |
1. CEF 3 Binary Paket für Visual Studio heruntergeladen:
http://www.magpcss.net/cef_downloads/index.php?file=cef_binary_3.1453.1255_windows.7z
2. cefclient2010.sln doppelklicken, ich habe dann Visual Studio 2012 für Windows Desktop ausgewählt, aktualisiert, auf ausführen, fertig
(mit den anderen Versionen geht es mit der passenden .sln Datei direkt)
Palladin007 - Fr 24.05.13 21:02
Hab ich getan und cefclient2010.sln ausgewählt.
Bei dem Versuch, es zu compilieren, bekomme ich aber eine Meldung, Screen im Anhang.
Drücke ich Ja, wird mir angezeigt, dass es ein Fehler beim Erstellen gab mit der Frage, ob ich die zuletzt funktionierende Version starten möchte.
Drücke ich Nein, gibt es den Fehler, dass er die cefclient.exe nicht ausführen kann, weil das System sie nicht finden kann.
jaenicke - Fr 24.05.13 22:21
Palladin007 hat folgendes geschrieben : |
| Drücke ich Ja, wird mir angezeigt, dass es ein Fehler beim Erstellen gab mit der Frage, ob ich die zuletzt funktionierende Version starten möchte. |
1. Auch mit der 2012er Visual Studio für Desktop?
2. Und welcher Fehler kommt? Davon wäre wenn der Screenshot interessant, denn nein drücken kann ja nichts bringen.
Palladin007 - Fr 24.05.13 23:19
Nein, nicht 2012, ich hab Visual Studio 2010, aber da sollte das doch eigentlich passen, oder?
Und welche Fehlermeldung meinst du?
Den Compiler-Fehler?
Keine Ahnung, das ist nur die typische Meldung, die kommt, wenn du einen Syntax-Fehler hast und versuchst zu compilieren. Hab geschaut, ob es da ein Fehler dann angezeigt wird, wird es aber nicht.
jaenicke - Sa 25.05.13 06:32
Ich sehe schon, das sind alles C++ Projekte. Bei mir ist das stets alles installiert, deshalb ist mir das gar nicht so aufgefallen.
Hier gibt es aber ein C# Beispiel:
https://github.com/Eun/CefSharp-Example
Palladin007 - Sa 25.05.13 18:59
Das war C++?
Aber ich dachte, da seien auch die C#-Beispiele dabei und VS dürfte doch sowieso kein Problem damit haben, C++ zu compilieren, oder?
Naja, wie dem auch sei, das, was du geschickt hat, funktioniert fast fehlerfrei.
Aber wenn ich über Google auf Youtube gelange, dort ein Video öffne und anschaue, während es läuft aber die Form beende, dann bekomme ich den Fehler, dass die vshost32-clr2.exe nicht mehr funktioniert.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| Problemsignatur: Problemereignisname: APPCRASH Anwendungsname: CefSharp-Example.vshost.exe Anwendungsversion: 10.0.30319.1 Anwendungszeitstempel: 4ba2084b Fehlermodulname: KERNELBASE.dll Fehlermodulversion: 6.1.7601.17965 Fehlermodulzeitstempel: 506dbe50 Ausnahmecode: c0020001 Ausnahmeoffset: 0000c41f Betriebsystemversion: 6.1.7601.2.1.0.768.3 Gebietsschema-ID: 1031 Zusatzinformation 1: 0a9e Zusatzinformation 2: 0a9e372d3b4ad19135b953a78882e789 Zusatzinformation 3: 0a9e Zusatzinformation 4: 0a9e372d3b4ad19135b953a78882e789 |
Hab versucht, das zu debuggen, allerdings bekomme ich dann den Fehler, dass bereits ein Debugger angehängt wurde.
Ich schau mal, ob das für mich von Relevanz ist, oder ob ich das nicht umgehen oder abfangen kann, dennoch wäre es sicher für Andere interessant, was das für ein Fehler ist.
jaenicke - So 26.05.13 09:47
Vielleicht kannst du vor dem Beenden des Fensters einfach zu einer leeren Adresse navigieren (about:blank als Adresse)?
Palladin007 - Di 28.05.13 22:27
Das wäre natürlich eine Idee, werde ich dann gleich mal aus testen, sobald ich Zeit finde.
Edit: Hab es gerade getestet, wenn ich im FormClosed-Event die Adresse auf about:blank fest lege, funktioniert alles bestens. ^^
Jetzt gibt es nur noch ein Problem und zwar hab ich fest gestellt, dass der Button im Youtube-Player, der zu Youtube führen soll, ein neues Fenster öffnet. Ein neues WindowsForms-Fenster, das nur das WebView-Control enthält.
Normalerweise, wenn ich einen neuen Browser schreiben würde, dann würde ich fragen, wie ich einstellen kann, dass sich die alte Form als neue eigenständige Instanz öffnet.
Aber bei meinem Problem ist es eher wichtig, dass sich Youtube dann im Standard-Browser öffnet.
Zur Not akzeptiere ich auch, dass der Button, der zu Youtube führt, ganz verschwindet, aber das würde ich gerne vermeiden.
Delete - Mi 29.05.13 23:15
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007 - Do 30.05.13 00:17
Echt jetzt?
Bei mir kann ich dann schön durch Google navigieren.
Was mich aber etwas wundert/stört, ist, dass die CefSharp-Library scheinbar nur bis .NET V3.0 funktioniert und darüber hinaus genau das passiert, was du beschreibst, nämlich nichts.
Delete - Do 30.05.13 01:28
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007 - Do 30.05.13 02:28
d3dx9_43.dll, wozu ist die gut?
Bei meinem Projekt hab ich grad das Problem, dass irgendwie der Browser nicht will, obwohl ich eigentlich alles so gemacht hab, wie im Beispiel, halt nur etwas aufgedröselt um es in mein Projekt einzubauen.
Wenn ich da nicht langsam ne Lösung finde, werd ich das wohl mal hier rein posten müssen :/
jaenicke - Do 30.05.13 07:46
Palladin007 hat folgendes geschrieben : |
| d3dx9_43.dll, wozu ist die gut? |
Diese Fehlermeldung bedeutet, dass der PC ein Problem hat. Gründe dafür können eine fehlerhafte Installation, ein Festplattenproblem oder andere sein. Jedenfalls ist DirectX dort kaputt.
Diese DLL benötigt Chromium für die Hardwarebeschleunigung, wie auch die meisten Spiele.
Delete - Do 30.05.13 13:56
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007 - Fr 14.06.13 07:18
Sorry für die späte Antwort
Woran es hapert?
Ich hab keine Ahnung.
Es gibt auch keinen Fehler, sondern einfach nur ein leeres Fenster.
Ich weiß nicht einmal, ob der Browser überhaupt dargestellt wird, oder ob der beim "Ausfahren" irgendwo stecken bleibt oder nicht angezeigt wird.
Ich glaube immer noch, dass ich irgendwo irgendwas vergessen habe - wie z.B. ein visible wieder auf true zu setzen und ich bin einfach nur zu doof, das auch zu finden. :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!