Videoplayer mit dem VlcControl ohne das der VLC installiert sein muss.

    • VB.NET
    • .NET (FX) 4.5–4.8

    Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Bartosz.

      Videoplayer mit dem VlcControl ohne das der VLC installiert sein muss.

      Hi Leute,

      gab hier ja immer wieder Fragen zum VLC-Plugin, wie auch allgemein zur Video-Wiedergabe unter WinForms. Lange war ich auch auf der suche nach was gescheiten zur Video-Wiedergabe, nun habe ich was. Heute zeige ich euch, wie ihr mit den Dateien(libvlc) des VLC-Players einen Videoplayer machen könnt. Der VLC-Player muss nicht mehr auf dem Zielsystem installiert sein. Ich gehe hier nur soweit darauf ein, das ihr ein Video abspielen könnt. Für alles weitere gibt es genug Informationen hier im Forum wie auch im Netz. Solltet ihr Fragen haben macht bitte einen Thread auf oder fragt hier.

      Getestet hab ich das unter Win7 (nackt, nur FW installiert) und Win10

      Im nachfolgenden Post findet ihr eine Videoanleitung dazu.

      BITTE BEACHTET UNBEDINGT DIE NUTZUNGSBEDNGUNGEN VOM VLC!


      OK, los geht's.

      1->Für eine CPU Architektur entscheiden damit wir nicht zwei Varianten der VLC-Dateien brauchen.
      Überlegt euch nun ob ihr für x64 oder x86 kompilieren wollt.

      2->Projekt anlegen
      Nicht vergessen die Architektur festzulegen!

      3->Nuget-Päckchen hinzufügen
      3.1 Sucht nach Vlc.DotNet.Forms, bei der installation werden 2 weitere abhängigkeiten automatisch installiert.


      4->VLC-Dateien(libvlc) besorgen
      Hier gibt es mehrere Möglichkeiten.
      4.1.a Den VLC in eine VM mit Windows-Guest installieren
      4.1.b Den VLC auf eurem System temporär installieren
      4.1.c Kompiliert sie euch selbst
      Achtet auf die richtige Architektur!

      4.2 Legt in eurem Debug und Release ordnern jeweils einen Ordner mit den Namen VLC an. Aus dem Installationsordner (bei Standart-Installationspfad C:\Program Files\VideoLAN, bzw. C:\Program Files (x86)\VideoLAN)
      kopiert ihr diesen Ordner und diese Dateien


      aus dem Ordner VLC(installationsordner) jeweils in die VLC Ordner in euren Debug- und Release- Ordnern.

      5->Form preparieren
      5.1 ToolBox aufmachen, dort sollte nun das VlcControl zu finden sein, zieht eins auf das Form. Passt die Size etwas an.


      6->Code, evtl. muss die Projektmappe einmal bereinigt und ein Rebuild durchgeführt werden, merkt ihr, wenn eine AccessViolationException auftritt.

      VB.NET-Quellcode

      1. Imports Vlc.DotNet.Forms
      2. Public Class FrmMain
      3. Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      4. VlcControl1.Play("http://192.168.1.154/test.mkv")
      5. End Sub
      6. Private Sub VlcControl1_VlcLibDirectoryNeeded(sender As Object, e As Vlc.DotNet.Forms.VlcLibDirectoryNeededEventArgs) Handles VlcControl1.VlcLibDirectoryNeeded
      7. e.VlcLibDirectory = New IO.DirectoryInfo("VLC/")
      8. End Sub
      9. End Class


      Viel Spass beim basteln!
      Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
      „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
      Benjamin Franklin

      Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „NoIde“ ()

      Hab dazu nun auch ein kurzes Video gemacht, damit fällt es manch einen ein wenig leichter.



      Auf dem Bild im Anhang zu sehen, in einer VM mit nackten Win7(nur Framework installiert) ohne VLC installation(war dort nie installiert) und Liste installierter Programme.
      Bilder
      • Unbenannt.jpg

        490,46 kB, 1.920×1.080, 313 mal angesehen
      Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
      „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
      Benjamin Franklin

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „NoIde“ ()

      Sehr nettes Tut!
      Wie kommt man an die Steuerelemente zb fullscreen vor und zurück etc....
      LG
      GOOGLE ist mein Meister :)
      @Bady
      Wie kommt man an die Steuerelemente zb fullscreen vor und zurück

      Mach dir einen Boolean istVollbild, den du mit nem Button oder Tastendruck umschaltest. Mach dir eine Schleife, in der regelmäßig alles abgefragt / aktualisiert wird.

      VB.NET-Quellcode

      1. Do
      2. Application.DoEvents()
      3. If (is_Pause) Then
      4. video0.Pause()
      5. TextBox1.Text = video0.CurrentPosition.ToString
      6. Else
      7. video0.Play()
      8. End If
      9. If (is_Stop) Then
      10. video0.Stop()
      11. End If
      12. If is_Btn_beenden_clicked Then 'im Vergeich zum Stop-Button wird hier zusätzlich die Schleife verlassen, sodass das Programm besser aufhört.
      13. video0.Stop()
      14. Exit Do
      15. End If
      16. If ist_Vollbild Then
      17. PictureBox1.Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
      18. PictureBox1.BringToFront()
      19. Else
      20. PictureBox1.Size = New Size(alterWertW, alterWertH)
      21. PictureBox1.SendToBack()
      22. End If
      23. ProgressBar1.Value = CInt(Math.Round((video0.CurrentPosition / video0.Duration * 100.0), 0))
      24. ProgressBar1.Refresh()
      25. Loop Until video0.CurrentPosition = video0.Duration
      26. video0.Dispose()


      Du kannst, bevor die Schleife beginnt, aber auch in der Sub, noch die Größe der Picturebox an das Videoformat anpassen. (4:3, 16:9, etc etc). Hierbei ist nur wichtig, darauf zu achten, dass alles auf das Bild passt. Dies ist alter Code, von einem Zeitpunkt, wo ich noch nicht so gut programmieren konnte, aber er funktioniert.

      VB.NET-Quellcode

      1. If Breite = 640 And Hoehe = 480 Then
      2. Dim Faktor1H As Double = 1070 / Breite
      3. Dim Faktor1B As Double = 602 / Hoehe
      4. PictureBox1.Size = New Size(CInt(Breite * Faktor1H), CInt(Hoehe * Faktor1B))
      5. ElseIf Breite = 848 And Hoehe = 480 Then
      6. Dim Faktor2H As Double = 1070 / Breite
      7. Dim Faktor2B As Double = 602 / Hoehe
      8. PictureBox1.Size = New Size(CInt(Breite * Faktor2H), CInt(Hoehe * Faktor2B))
      9. ElseIf Breite = 1920 And Hoehe = 1080 Then
      10. Dim Faktor3H As Double = 1070 / Breite
      11. Dim Faktor3B As Double = 602 / Hoehe
      12. PictureBox1.Size = New Size(CInt(Breite * Faktor3H), CInt(Hoehe * Faktor3B))
      13. ElseIf Breite = 720 And Hoehe = 480 Then
      14. Dim Faktor4H As Double = 1070 / Breite
      15. Dim Faktor4B As Double = 602 / Hoehe
      16. PictureBox1.Size = New Size(CInt(Breite * Faktor4H), CInt(Hoehe * Faktor4B))
      17. Else
      18. PictureBox1.Size = New Size(Breite / 3, Hoehe / 3)
      19. End If
      An die Neulinge: Nutzt Option Strict On und Option Infer Off. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.