[VB2010] Youtube-Video in Steuerelement abspielen? - Shockwave Flash funktioniert nicht mehr...

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    [VB2010] Youtube-Video in Steuerelement abspielen? - Shockwave Flash funktioniert nicht mehr...

    Hallo! Hilfe!

    Ich möchte in einem Steuerelement ein Youtube-Video abspielen.

    Bislang hatte ich dies mit einem Shockwave-Flash-Objekt gelöst und alles funktionierte bestens.

    Jetzt hat Youtube die Flash-Unterstützung eingestellt ("Flash-embedded Videos are no longer supported...") und ich komme nicht weiter:

    Ich habe versucht, anstelle des Shockwave-Flash-Objekts (mit dem URL-Format: youtube.com/v/<video-id>) einen Webbrowser (mit dem URL-Format: https://www.youtube.com/embed/<video-id>)zu verwenden, komme damit aber nicht weiter – das Webbrowser-Element wird und bleibt einfach schwarz.

    VB.NET-Quellcode

    1. Dim Link As String = https://www.youtube.com/embed/<video-id>
    2. Dim url As New Uri(Link)
    3. WebBrowser1.Url = url


    Wenn ich den „normalen“ Youtube-Link (mit dem URL-Format: youtube.com/watch?v=<video-id>) benutze, wird die komplette Youtube-Seite angezeigt und das Video funktioniert. Ich möchte aber nur das Video, nicht die komplette Youtube-Seite anzeigen.

    Ich habe auch – erfolglos (und ohne Ahnung von html) – versucht, den von Youtube unter „Teilen“ bereitgestellten html-Code zu benutzen:

    VB.NET-Quellcode

    1. Dim doc As String = "<html><body>" & vbCrLf & "<iframe width=""560"" height=""315"" src=""https://www.youtube.com/embed/<video-id>?ecver=1""frameborder=""0"" allowfullscreen></iframe>" & vbCrLf & "</body></html>"
    2. WebBrowser1.DocumentText = doc


    Ich habe jetzt drei Abende im Internet verbracht und bin nicht fündig geworden. (Insbesondere möchte ich nach Möglichkeit keinen Player wie VLC oder WMP benutzen; es sollen eigentlich keine Steuerelemente zu sehen sein.)

    Weiß jemand, wie ich von AxShockwave auf WebBrowser umstellen kann? Kann mir jemand einen Tipp geben?

    Gruß, DocTom.
    Hallo Nolde,
    danke für die schnelle Antwort. Ich bin was Internet-Einbindung in VisualBasic angeht total unbeleckt.
    Ich habe bislang lediglich aus der Toolbox den Webbrowser auf meine Form gezogen oder früher halt das Shockwave-Element (aus den COM-Verweisen, da finde ich aber Gecko nicht...)
    Was ist denn die Gecko-Browserengine? Wo kriege ich sie her, wie binde ich sie ein und benutze sie?
    @DocTom Gecko ist das FireFox-Pendant zum Internet-Explorer-Webbrowser.
    Runterladen, registrieren, reinziehen, Run.
    z.B. hier: developer.mozilla.org/en-US/docs/Mozilla/Gecko/Gecko_SDK
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke für den Hinweis, RodFromGermany.

    Ich habe mir die Seite angeschaut und tatsächlich gar nichts verstanden (und es liegt nicht am Englisch...) Meine Programmierkenntnisse liegen offenbar Klassen unter diesem Niveau...
    Ich habe noch nie irgendwelche SDKs in meinen Programmen genutzt, sondern nur das, was mir die Toolbox (bzw. die Komponenten unter "Projekt/Verweis hinzufügen...") Ich baue auch ungern Sachen ein, die ich nicht verstehe (vgl. Deinen Hinweis auf die C&P-Bremse...).
    Und wenn ich es recht verstehe, muss ich bei Sicherheitsupdates von Mozilla die "newest Gecko components (gklayout.dll etc.)" beschaffen?!?

    - Langer Rede kurzer Sinn: Für diesen Lösungsweg bin ich offenbar noch zu sehr Anfänger.
    Habt Ihr eine Idee, wie man das Problem mit VisualStudio-"Bordmitteln" lösen kann?
    Das ganze Netz ist voll Tutorials, wie man Youtube-Videos über das Shockwave-Flash-Objekt abspielen kann. Alle, die (wie ich) auf diese Weise vorgegangen sind, stehen doch jetzt sicher vor demselben Problem wie ich...

    DocTom schrieb:

    Meine Programmierkenntnisse liegen offenbar Klassen unter diesem Niveau...
    Vielleicht suchst Du Dir dann zunächst ein paar einfachere Programmieraufgaben, bis Du an diesem Niveau angekommen bist: [Sammelthread] Programmieren, aber was? (Programmideen)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Nolde: Vielen Dank für den Link und das Video. Wenn mir keine andere Möglichkeit bleibt, werde ich mich ggfs. damit mal einarbeiten.

    @RodFromGermany: Ich habe bereits ein existierendes Programm, das bislang bestens funktioniert hat (nämlich mit AxShockwave...) Dieses Programm möchte ich nun retten, indem ich die Fuktionalität "Youtube-Video-abspielen" auf andere Weise gewährleiste. Bislang hat dieses - schon fertiggestellte - Projekt also meinen Fähigkeiten voll entsprochen. Ich kann mir eigentlich nicht vorstellen, dass das Abspielen von Youtube-Videos nun auf einmal so kompliziert geworden sein sollte, dass meine Fähigkeiten dazu nicht mehr ausreichen, nachdem es bislang völlig einfach war und zig (nun veraltete) Tutorials dafür im Netz zu finden sind. Daher habe ich die Hoffnung, dass sich ggfs. doch noch eine einfachere (vielleicht auch weniger elegante) Lösung finden lässt, die ich mit meinen Fähigkeiten umsetzen kann.

    DocTom schrieb:

    meinen Fähigkeiten voll entsprochen
    passt nicht zu Deinem Post #5, ist aber auch egal.
    Mit welchem Code hast Du denn das YT-Video abgespielt?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe folgenden Code zum Abspielen des Youtube-Videos benutzt:

    VB.NET-Quellcode

    1. Dim Link As String = dgvVideos.SelectedRows(0).Cells("URL").Value.ToString
    2. 'hier wird aus einem DataGridView (gespeist aus einer Datenbank) die Standard-Youtube-URL (https://www.youtube.com/watch?v=<video-id>) entnommen
    3. Link = Link.Replace("/watch?v=", "/v/")
    4. 'diese wird in die (leider jetzt nicht mehr funktionierende) Form gebracht
    5. Link = Link & "?rel=0&autoplay=1&controls=0&iv_load_policy=3"
    6. 'es werden einige Parameter hinzugefügt
    7. AxShockwaveFlash1.Movie = Link
    8. 'jetzt geht's ans Abspielen
    9. 'ALTERNATIV (funktionierte genauso):
    10. WebBrowser1.Url = New Uri(Link)


    Und, wie gesagt, wenn ich jetzt die angeblich aktuelle Form: https://www.youtube.com/embed/<video-id> verwende (selbst ohne jegliche weitere Parameter), dann kommt die Anzeige: "Flash-embedded Videos are no longer supported..."

    DocTom schrieb:

    VB.NET-Quellcode

    1. AxShockwaveFlash1.Movie = Link
    Damit scheint es echt Probleme zu geben.
    Gib mal AxShockwaveFlash1.Movie bei Frau Google ein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn du es schaffst an den Link zu kommen, mit dem du das video direkt runtwrladen kannst, dann kannst du diesen mit einem normalen mp4 streaming fähigen browser abspielen (ggf auch paar andere formate). In WPF z.b. das MediaElement sollte das glaub ich können. Für WinForms musst dir denke ich was runterladen/programmieren.

    Flash ist jetzt endlich tot, nachdem es so viele Jahre halbtot verrottet ist. Mmn sollte man immer und über all vermeiden die Totenruhe von Flash zu stören.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich habe mittlerweile lange gesucht. Meine Zwischenergebnisse:
    - Jedenfalls was das Abspielen von Youtube-Videos angeht, ist Flash Geschichte. Also über den AxShockwaveFlash geht insoweit nichts mehr.
    - Das WebBrowser-Steuerelement ist vollkommen veraltet und kann die aktuellen Seiten nicht gescheit anzeigen, insbesondere kein HTML5.

    Also bleibt mir wohl nichts anderes übrig, als einen anderes Browser-Steuerelement zu installieren. Auch diesbezüglich habe ich mir haufenweise Tutorials reingezogen, insbesondere Firefox Engine (GeckoFX + xulrunner) Version 29(+) in VB.NET.
    Leider ohne Erfolg. Ich habe exakt dasselbe Problem wie dort von User H2O beschrieben (und ich habe es mehrfach neu versucht, auch mit der alten Version 29, um die es in dem Tut geht). Leider ohne jeglichen Erfolg.
    NuGet habe ich nicht (ich habe VisualStudio2010Express und ich möchte eigentlich dabei bleiben).
    Über Awesomium habe ich viel Positives gelesen, nur: das kann man offenbar nicht mehr 'runterladen; es wird nur ein Update angekündigt, ohne dass es die alte Version gäbe.

    Ich bin echt ziemlich gefrustet, habe echt alles versucht. :( Habt Ihr nicht noch Ideen?
    Wo kann ich z. B. ein (funktionierendes) Beispielprojekt mit allen benötigten Dateien/DLLs runterladen, von welchem ich dann ausgehen kann?
    Hallo

    Wenn es nur um das abpielen geht dann pack den embedded code von YT in ein Webbrowsersteuerelement. Da gibts auch eine option zum automatischen abspielen sowei ich weis.

    Grüße
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @Nofear23m womit du genau wieder beim Anfangsproblem bist
    @TE:
    Hast du jetzt mal versucht an den Download Link zu kommen und diesen herunterzuladen. Dann musst du versuchen das in deiner Anwendung abzuspielen. Wenn du das kannst musst du es nur noch streamen, was auch nicht so der stress ist und ganz zur not sogar für player die das nicht unterstützen mittels WinAPI emulierbar sein sollte.
    Aber wie gesagt WPF und Mediaelement sollte das bereits alles können. Fehlt nur das parsen des Download links.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---