Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0425: DVDs abspielen

 von 

Beschreibung 

Mit diesem Tip kann man - mit Hilfe der MSWebDVD-DLL - DVDs abspielen. Es wird allerdings ein gültiger Codec (z.B. von PowerDVD, WinDVD, SoftDVD) vorausgesetzt

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [3,47 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
' Die Komponente ' (mswebdvd.dll)' wird benötigt.
' Die Komponente 'Microsoft Windows Common Controls 6.0 (SP6) (mscomctl.ocx)' wird benötigt.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "cmdZoomOut"
' Steuerelement: Schaltfläche "cmdZoomIn"
' Steuerelement: Schaltfläche "cmdMute"
' Steuerelement: Textfeld "txtSubtitleLang"
' Steuerelement: Textfeld "txtStreamString"
' Steuerelement: Schaltfläche "cmdFullScreen"
' Steuerelement: Textfeld "txtFPS"
' Steuerelement: Schaltfläche "cmdNextSubPicture"
' Steuerelement: Schaltfläche "cmdPrevSubPicture"
' Steuerelement: Textfeld "txtSubPicturesAvailable"
' Steuerelement: Textfeld "txtSubPicture"
' Steuerelement: Textfeld "txtStreamNow"
' Steuerelement: Slider "sldBalance"
' Steuerelement: Textfeld "txtAudioStreams"
' Steuerelement: Timersteuerelement "Timer1"
' Steuerelement: Schaltfläche "cmdEject"
' Steuerelement: Schaltfläche "cmdFB"
' Steuerelement: Schaltfläche "cmdFF"
' Steuerelement: Schaltfläche "cmdStop"
' Steuerelement: Schaltfläche "cmdPause"
' Steuerelement: Schaltfläche "cmdPlay"
' Steuerelement: Schaltfläche "cmdQuit"
' Steuerelement: Schaltfläche "cmdNextChapter"
' Steuerelement: Schaltfläche "cmdPrevChapter"
' Steuerelement: Microsoft Web DVD "MSWebDVD1"
' Steuerelement: Beschriftungsfeld "lblStatus"
' Steuerelement: Beschriftungsfeld "Label9"
' Steuerelement: Beschriftungsfeld "Label10"
' Steuerelement: Beschriftungsfeld "Label8"
' Steuerelement: Beschriftungsfeld "Label7"
' Steuerelement: Beschriftungsfeld "Label4"
' Steuerelement: Beschriftungsfeld "Label3"
' Steuerelement: Beschriftungsfeld "Label2"


'Autor: Mario Zeller
'E-Mail: interlux@web.de

Option Explicit

Private Sub cmdEject_Click()
    'CD auswerfen
    MSWebDVD1.Eject
End Sub

Private Sub cmdFB_Click()
    'Schnell rückwärts
    On Error Resume Next
    MSWebDVD1.PlayBackwards 2
End Sub

Private Sub cmdFF_Click()
    'Schnell verwärts
    On Error Resume Next
    MSWebDVD1.PlayForwards 2
End Sub

Private Sub cmdFullScreen_Click()
    'Vollbildmodus
    MSWebDVD1.FullScreenMode = Not MSWebDVD1.FullScreenMode
End Sub

Private Sub cmdMute_Click()
    'Ton Stummschalten
    MSWebDVD1.Mute = Not MSWebDVD1.Mute
End Sub

Private Sub cmdNextChapter_Click()
    'Nächstes Kapitel
    On Error Resume Next
    MSWebDVD1.PlayNextChapter
End Sub

Private Sub cmdNextSubPicture_Click()
    'Untertitel ändern
    On Error Resume Next
    MSWebDVD1.CurrentSubpictureStream = MSWebDVD1.CurrentSubpictureStream + 1
End Sub

Private Sub cmdPause_Click()
    MSWebDVD1.Pause
End Sub

Private Sub cmdPlay_Click()
    MSWebDVD1.Play
End Sub

Private Sub cmdPrevChapter_Click()
    'Vorheriges Kapitel
    On Error Resume Next
    MSWebDVD1.PlayPrevChapter
End Sub

Private Sub cmdPrevSubPicture_Click()
    'Untertitel ändern
    On Error Resume Next
    MSWebDVD1.CurrentSubpictureStream = MSWebDVD1.CurrentSubpictureStream - 1
End Sub

Private Sub cmdQuit_Click()
    'Programm beenden
    MSWebDVD1.Stop
    End
End Sub

Private Sub cmdStop_Click()
    'Wiedergabe stoppen
    MSWebDVD1.Stop
End Sub

Private Sub cmdZoomIn_Click()
    'Zentriert vergrößern
    MSWebDVD1.Zoom 360, 270, 2
End Sub

Private Sub cmdZoomOut_Click()
    'Zentriert verkleinern
    MSWebDVD1.Zoom 360, 270, 0.5
End Sub

Private Sub MSWebDVD1_LostFocus()
    'Wenn ALT-TAB gedrückt wurde, wieder in den Normal-Modus
    MSWebDVD1.FullScreenMode = False
End Sub

Private Sub sldBalance_Change()
    'Die Balance ändern
    MSWebDVD1.Balance = sldBalance * 100
End Sub

Private Sub Timer1_Timer()
    'Hier werden Informationen über die DVD gesammelt
    On Error Resume Next
    
    'Verfügbare Audio-Streams in der momentanen Szene
    txtAudioStreams.Text = MSWebDVD1.AudioStreamsAvailable
    
    'Aktueller Audio-Stream
    txtStreamNow.Text = MSWebDVD1.CurrentAudioStream
    txtStreamString.Text = _
        MSWebDVD1.GetAudioLanguage(MSWebDVD1.CurrentAudioStream)

    'Untertitel
    txtSubPicturesAvailable.Text = _
        MSWebDVD1.SubpictureStreamsAvailable
                          
    txtSubPicture.Text = MSWebDVD1.CurrentSubpictureStream
    txtSubtitleLang.Text = _
        MSWebDVD1.GetSubpictureLanguage(MSWebDVD1.CurrentSubpictureStream)
    
    'Frames/Sekunde
    txtFPS.Text = MSWebDVD1.FramesPerSecond

    'Balance
    sldBalance = MSWebDVD1.Balance \ 100
    
    'Statusfeld zusammenstellen
    lblStatus.Caption = Trim(Str$(MSWebDVD1.CurrentTitle)) & _
        " - " & Trim(Str$(MSWebDVD1.CurrentChapter)) & "/" & Trim(Str$( _
        MSWebDVD1.GetNumberOfChapters(MSWebDVD1.CurrentTitle))) & " - " & _
        MSWebDVD1.CurrentTime & "/" & MSWebDVD1.TotalTitleTime
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 27 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Silvio Lichtenberg am 15.03.2007 um 19:33

Hallo
Hätte gerne gewusst wie man das Seitenverhältnis des Bildes ändern kann.
Vielen Dank im Vorraus
S. Lichtenberg

Kommentar von Oli am 22.02.2006 um 11:34

an alle die den fehler 'Schnittstelle nicht unterstützt' haben. die lösung ist ganz einfach kopiert die mswebdvd.dll und qdvd.dll ins Projekt Verzeichnis.

Kommentar von Alex am 16.02.2006 um 16:18

Hi Leute,
weiss jemand, wie ich das abgespielte Video auch mitschneiden kann (VB-technisch meine ich)? Habe in den Tipps gestöbert, bisher ohne Erfolg...

Kommentar von Steppi am 16.02.2006 um 10:04

Hallo
zum Thema DVD's von der Platte abspielen ohne das eine DVD eingelegt ist: Man muss lediglich die beiden Verzeichnisse C:\VIDEO_TS und C:\AUDIO_TS erstellen. Wenn mit eingeschränktem Benutzerkonto gearbeitet wird noch Vollzugriff für Benutzer einstellen, fertig.

Kommentar von CG-S am 08.11.2005 um 08:02

Hi!

Ich möchte auch mit diesem Code DVD´s von der Festplatte abspielen.
Ist eine DVD im Laufwerk, kann ich auch DVD´s von der Platte abspielen, ist keine DVD eingelegt, so funktionierts auch nicht.

Bitte Hilfe...

Kommentar von Daniel am 17.05.2005 um 19:18

Das Programm funktioniert wirklich gut. Kann mir jemand einen Tipp geben, wie ich die Sprache (Tonspur) während dem Film ändern kann. Außerdem habe ich es noch nicht geschafft, einen Film von Festplatte abzuspielen. Kann mir jemand helfen.

Vielen Dank und viele Grüße,
Daniel

Kommentar von Mario am 06.10.2004 um 10:23

kann mir einer das programm mal mailen mit oberfläche und soweiter??????????

bitte sieht recht gut aus

Kommentar von CG-S am 13.09.2004 um 13:52

Hi Leute!

Ich hab diesen Tipp eingebaut und er ist echt super, aber ich hab folgendes Problem:
Ich kann zwar einen Pfad angeben von einer lokalen DVD (auf Platte gerippt) mit mswebdvd.dvddirectory = und der Pfad, aber er akzeptiert das nur, wenn im DVD-LW eine Disk eingelegt ist.
Ich möchte aber kein LW anschließen, also nur DVD´s von der Platte abspielen.

Kann mir da wer helfen?

mfg
Chris

Kommentar von Hubert am 08.09.2004 um 13:08

Geht das auch mit einem normalen CD-Laufwerk und einer SVCD?

Kommentar von peppi78 am 01.09.2004 um 11:08

einfach bei google nach "free dvd codec" suchen, dann den ersten eintrag anklicken und dann den codec downloaden

Kommentar von G.M. Subelack am 11.07.2004 um 21:58

Georg, Dubtschek und ZMaster:
Software dvd decoder, oder hardware dvd decoder.

Bei PowerDvd benutst man
#1 Claud.ax
#2 Claudfx.ax
#3 Cldxva.ax
#4 Clvsd.ax

Nach dein Windows\system\ copieeren.

Wird so installiert:
Windows\system\regsvr32 /s Claud.ax
Windows\system\regsvr32 /s Claudfx.ax
Windows\system\regsvr32 /s Cldxva.ax
Windows\system\regsvr32 /s Clvsd.ax

Windows = Windows Directorie.
System = System Directorie.

-----------------------------------------------------------------------------

Chris, Mario und Eric:
DirectX bekomt man hier:

http://www.microsoft.com/windows/directx/default.aspx?url=
/windows/directx/downloads/default.htm

MsWebDvd.dll und QDvd.dll ist da drin.

-----------------------------------------------------------------------------

René und Stephan;
Ich kenne kein VB aber
so wirt es gemacht in Delphi....

procedure Open_DvdFiles_On_HDD;
Var
F : String;
Dir : Bool;
Begin
If Opendialog.Execute Then // Open Dvd Files On HD.
Begin
Dir := False;
F := Opendialog.FileName; // C:\YourDvdStuff\VIDEO_TS\VIDEO_TS.IFO.

*************************************************************************
C:\YourDvdStuff\VIDEO_TS\VIDEO_TS.IFO is Not a Falid DVD Directorie.
So.... Make A False Directorie To Decept MSWebDVD.
*************************************************************************

F := F[1] + ':\VIDEO_TS'; // F[1] = DriveLetter.
If Not DirectoryExists(F) Then // If Exists, Dir = False.
Begin
ForceDirectories(F); // Make This Directorie F[1] + ':\VIDEO_TS'
Dir := True; // Delphi Made This Directorie so....
end; // Dir = True.

MSWebDVD.DVDDirectory := ExtractFilePath(Opendialog.FileName);
// C:\YourDvdStuff\VIDEO_TS\

Try // Prevent Errors.
MSWebDVD.ControlInterface.Play;
Except end;

If Dir Then // If Delphi Made This Directorie Then...
Begin
Sleep(1500); // Wait 1.5Sec....
RemoveDirectory(PChar(F)); // Then Remove The Directory.
end;
end;
end;

Probiere myn Dvd Spieler. Dort wirkt es auch.
http://www.geocities.com/gmsubelack/

-----------------------------------------------------------------------------

Tomato:
Wie kann ich die Menüpositionen auslesen?!?
So wirt es gemacht in Delphi....

Procedure TimerEvent; // 500Ms.
Var
Cur : Integer;
Btn : Integer;
Begin
Try // Prevent Errors.
If MSWebDVD.ControlInterface.ButtonsAvailable >0 Then // ButtonsAvailable ?

Try // Prevent Errors.
MSWebDVD.ControlInterface.DisableAutoMouseProcessing := True;
GetCursorPos(CurPoint); // Find Cursor Position.

Try // Prevent Errors.
Btn := MSWebDVD.ControlInterface.GetButtonAtPosition(CurPoint.X -Left, CurPoint.Y -(Top));
Except Btn := 0; End;

If (Btn >0) And (Cur = 0) Then
Begin
Cur := -21; // Cursor HandPoint.
end
Else
If (Btn = 0) Then
Cur := 0; // Cursor Default.
Except end
Else
Cur := 0; // Cursor Default.
MSWebDVD.Cursor := crDefault;
MSWebDVD.Cursor := Cur;
MSWebDVD.ControlInterface.DisableAutoMouseProcessing := False;
Except end;
end;

Gruß
G.M. Subelack.
Sorry for my German writing. Kom aus Holland.

Kommentar von René am 06.07.2004 um 19:09

Geht nicht :-( Kriege immer einen Laufzeitfehler dass der Vorgang in der aktuellen Domäne (?) nicht erlaubt sei.

Kommentar von G.M. Subelack am 28.06.2004 um 23:54

MSWebDVD1
Das DVD-Video soll nicht von DVD-Rom sondern von einem Verzeichnis
auf Festplatte gestartet werden.
Wie kann der Pfad eingestellt werden ?

Man sol ein directory machen befor man MSWebDVD1 actief macht Beispiel;


C:\VIDEO_TS
Start dein Program mit MSWebDVD1
und nacher endfernen

Schow mall uff:
http://geocities.com/gmsubelack
da findest du ein MSWebDVD demoprogram mit sourse
fur Delphi.

Kommentar von Georg am 18.05.2004 um 08:50

Hallo, danke für den Tipp, jetzt kann ich zwar kompilieren, wenn ich das Ding aber laufen lasse, heisst es : Laufzeitfehler -2147217415 (80040ff9) : to user the dvd player, you need to install either a software dvd decoder, or a hardware dvd decoder.

Was jetzt? Wo bekomme ich diese Software? Ich verwende SDK 8.1 und VB6.0 auf Win2K Pro.

Kommentar von Chris am 17.05.2004 um 08:38

Hi Georg,

wenn ich das richtig sehe, müsste die Datei bei der Installation von DX9 mitinstalliert werden...

ByeChris

Kommentar von Georg am 17.05.2004 um 08:29

Wo bekomme ich die mswebdvd.dll? Die Frage hat unten schon jemand gestellt, nur steht die Antwort nirgens.....

Kommentar von Chris am 07.11.2003 um 10:38

Wie mein Vorgänger schon meinte "Schnittstelle nicht unterstützt"...

Hab Win2000 und VB6, hat jemand ne Idee? QDVD.DLL existiert auch und hab PowerDVD installiert...

Wäre recht dringend. Danke schonmal im voraus.

Chris

Kommentar von Markus am 15.09.2003 um 21:54

Hi,

der Tip funktioniert bei mir überhaupt nicht!
Ich bekomme überall 'Schnittstelle nicht unterstützt' (alle, außer Slider, ZoomOut, Mute, NextSubPicture, PrevSubPicture, FB, FF, Stop & Quit (manchmal 'Schwerwiegender Fehler'), NextChapter, PrevChapter) oder 'Nicht implementiert' (Slider).

Es war eine DVD eingelegt.

Das Programm läßt sich fehlerfrei kompilieren..

Kommentar von ThomasT am 28.04.2003 um 08:00

Hallo,

hat mir sehr geholfen! Funktioniert auch alles Tadellos. Nur suche ich jetzt seit stunden eine Funktion oder dergleich um ein Overlay über das Videobild zu legen, um zum Beispiel die aktuelle Lautstärke anzuzeigen. Wäre schön wenn mir da geholfen werden könnte.

Gruß
Thomas

Kommentar von Christopher am 27.12.2002 um 13:31

Folgende Fehler traten bei mir auf (Vb 6,win98):

Line 202: Class MSWEBDVDLibCtl.MSWebDVD of control MSWebDVD1 was not a loaded control class.

Line 208: The property name _cx in MSWebDVD1 is invalid.

Line 209: The property name _cy in MSWebDVD1 is invalid.

Line 210: The property name DisableAutoMouseProcessing in MSWebDVD1 is invalid.

Line 212: The property name EnableResetOnStop in MSWebDVD1 is invalid.

Line 213: The property name ColorKey in MSWebDVD1 is invalid.

Line 214: The property name WindowlessActivation in MSWebDVD1 is invalid.

Kommentar von Dubtschek am 17.10.2002 um 20:50

Funktioniert soweit ganz gut, aber es erklingt nichts aus den Boxen.
PowerDVD funktioniert auch.
Woran kann das liegen,hat jemand das selbe Problem?

Kommentar von Stephan am 11.10.2002 um 16:23

MSWebDVD1
Das DVD-Video soll nicht von DVD-Rom sondern von einem Verzeichnis
auf Festplatte gestartet werden.
Wie kann der Pfad eingestellt werden ?

Kommentar von Stephan Zebisch am 09.10.2002 um 11:25

Wo bekommt man diese Dateien ?
MSWEBDVD.DLL MSCOMCTL.OCX

Mit freundlichen Grüßen
Stephan Zebisch

Kommentar von Eric SANDRA am 01.02.2002 um 15:17

Thanks for your website.
Your code about DVD in VB is interesting but where can I find MSWEBDVD. If it is a DLL, please tell me how to install and register it.
Thanks for all.

Kommentar von Tomato am 23.10.2001 um 00:35

Wie kann ich die Menüpositionen auslesen?!?
Ich weiß, mittlerweile, daß ich mit dem Event
"MSWebDVD1_ShowMenu" und der Abfrage
"If MSWebDVD1.ButtonsAvailable 0"
erkenne, ob ich mich in einem menü befinde.
Auch das setzen von menüs mit
"mswebdvd1.ActivateAtPosition" haut offensichtlich hin. nur leider bekomme ich beim auslesen der Koordinaten mit
dim i
dim u as button
u = SWebDVD1.GetButtonRect(i)
(i=nummer des Buttons)
immer eine Fehlermeldung...
Wäre nett, wenn mir jemand helfen könnte

Kommentar von Mario Zeller am 28.06.2001 um 17:23

Zum erfolgreichen Abspielen von DVDs benötigt man die DLL qdvd.dll, die ein Filter für Microsoft DirectShow ist und bei vielen Software-DVD-Playern mitgeliefert ist. Da ich nicht weiß, ob es legal ist, kann ich sie vorerst nicht in den Upload-Bereich stellen. Aber vielleicht hilft eine FTP Datei-Suche weiter? ;-)

Kommentar von ZMaster am 17.06.2001 um 18:54

Wie kann ich den den Codec eines DVD Programmes installieren/aktivieren/registrieren? Ich habe PowerDVD installiert, doch wenn ich mein Programm ausführe heist es, das ich eine Decodersoftware installieren muss!