MCI Play

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
BSP
Beiträge: 201
Registriert: 01.02.2009 14:04

Re: MCI Play

Beitrag von BSP »

Nochmal hallo dige.
Da zeigt mir jemannd was und ich Dussel merk das nicht.
Ich war tatsächlich mit meiner Konzentration am Ende.
Habs mir nun runter geladen. Aber ich gestehe, damit bin ich noch stark überfordert.
Und als ich den Player starten wollte bekam ich die Fehlermeldung "Icon-Datei nicht gefunden".
Weil mir PB nicht anzeigt in welcher Zeile der Fehler auftritt, stecke ich hier also schon fest.
Keine Sorge, ich erwarte nun nicht von Dir, mir alles schritt für schritt bei zu bringen.
Ich wollte mich nur noch schnell nachträglich bedanken. Was hierdurch geschied.
Ich werde es sicher noch lernen, da durch zu steigen.
Gruß: Bernd
PB 5.31 (x86) & (x64) Win10
DePe
Beiträge: 194
Registriert: 26.11.2017 16:17

Re: MCI Play

Beitrag von DePe »

Hallo Bernd,

das fehlende Icon ist eine Einstellung in der PB-Datei.

Hier kannst du das Icon ändern oder abwählen:
Compiler -> Compiler-Optionen -> Benutze Icon: ...

Und hier kannst du nachschauen wo du z.B. die Einstellungen speicherst:
Einstellungen -> Editor -> Einstellungen speichern: 'Kombinationsliste'

Wenn du die MediaPlayer.pb Datei in einen Texteditor öffnest, findest du die Einstellungen ganz am Ende der Datei.

Peter
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: MCI Play

Beitrag von DarkDragon »

Guck mal was für Codec-Arten es sind. Es gibt Codecs für unterschiedliche Windows APIs (VfW, DirectShow, WDM, ...). Das directshow filter pack war früher das einzige das ich installierte, da musste man aber bei der Installation VfW anklicken wenn man VfW noch nutzt. Microsoft saugt sich alle paar Jahre eine neue API aus den Fingern.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
jogo
Beiträge: 118
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint Mate

Re: MCI Play

Beitrag von jogo »

was ich wirklich komisch finde, dass auf den einen Monitor alles ok ist, aber auf den Zweiten nicht. Ruf doch mal am Anfang des Programms ExamineDesktops() auf.
Ich kann mir nicht vorstellen, das der gewählte Codec unterschiedlich arbeitet, nur weil die Position des Wiedergabefensters höhere x/y Werte hat...
--
Ideen gibt es viele - man muss sie nur haben...
Mint LMDE5+6 // PureBasic 6.12
BSP
Beiträge: 201
Registriert: 01.02.2009 14:04

Re: MCI Play

Beitrag von BSP »

Hallo DePe.
Danke für Deinen Hinweis. Nun läufts.
Aber ich muß gestehen, ich stehe immer noch da "wie der Ochs vorm Berg".
Ich lerne neues lieber und besser in kleinen Schritten mit kleinen Beispielen an denen ich dann herumexperimentieren kann und sehe, was passiert.

Hallo DarkDragon.
Ich habe K-Lite Pack, Sharkpack und einen Windowpack versucht. Keine Ahnung, was die da so einstellen.
(Schon blöde, wenn man kein, bzw. zu wenig Englich kann).
So lasse ich die Packs in ihren Grundeinstellungen laufen. (Sich einrichten).

Hallo jogo.
Ja, das verstehe ich auch nicht. ExamineDesktops() rufe ich jedesmal auf, wenn ich Desktop- Anweisungen ausführe oder Werte abfrage.
Z.B. wenn ich das Fenster auf DesktopX(desktop) oder DesktopY(desktop) setze. (Resize).
Um zu testen, ob meine Fenster, die Gadgets (wenn ich darauf rendere) und das Video an der richtigen stelle sitz, habe ich auch mal mit verschiedenen grössen und Hintergrundfarben probiert , so das man eine Art Rahmen sieht. Scheint soweit alles zu stimmen.
Und die Videoposition richtet sich ja nach dem Fenster, nicht nach dem Desktop.Linke obere Ecke ist also 0,0.
Procedure MCI_SetVideoSize(X, Y, W, H)
a$ = Str(X) + " " + Str(Y) + " " + Str(W) + " " + Str(H)
fehler = mciSendString_("put TempMCI destination at " + a$, 0, 0, 0)
EndProcedure
Denn mit
fehler = mciSendString_("window TempMCI handle " + Str(WindowID(#hwnd)), 0,0,0)
wird das video ja aufs fenster geschaltet.
Die Fensterposition richtet sich nach dem Desktop.
(windowX = desktopX)
Aber ich werde das alles nochmal durchforsten.
Ach ja. Und der Ablauf nach einem Videoaufruf ist immer gleich. Egal, auf welchen Fenster.

Gruß: Bernd
PB 5.31 (x86) & (x64) Win10
BSP
Beiträge: 201
Registriert: 01.02.2009 14:04

Re: MCI Play

Beitrag von BSP »

Hallo Allerseits.
Ich stelle nun hier mal eine stark abgespeckte Version meines Programms rein.
Vieleicht hat ja der eine oder die andere Lust, damit etwas zu "spielen".
Benötigt wird natürlich ein zweiter Monitor. Weil dort der Fehler auftritt. Man kanns aber auch so laufen lassen.
(Bei mir der Fernseher via HDMI).
Installiert habe ich das Codecpack K-Lite Version 1860mega.
Als Testvideo nehme ich eine Musik- Filmdatei von einem Konzert.
Länge: 06.44 min, 92,1 Mb.
Die Chance das es läuft ist hoch, wenn ich das Video etwas laufen lasse, bevor ich es neu starte.

Das Programm kennt die Tasten.
Taste F und die Rechts Taste.

Taste F schaltet das Fenster.
A: Ist die Maus auf dem Desktop mit dem Fenster,
wird das Fenster in der grösse geändert. Vollbild, Normalbild.
B: Ist die Maus auf dem anderen Desktop, wird das Fenster auf den Dektop gezogen, wo die Maus ist.

Rechts Taste startet das Video wieder neu.

Mit den Tasten "F1 / F2" kann man auswählen, ob der aktuelle Film wiederholt wird oder ob man nach jedem Filmende einen Neuen auswählt.

Mit der Taste "n" kann man jederzeit abbrechen und einen neuen Film auswählen.


Das ich den tempMCI name immer wieder umschalte ist beabsichtigt. Zum einen wegen der Überlegung, ob window dort immer hängen bleibt, weil es die Ausgabe nicht richtig vom Renderobjekt trennt,
zum anderen hat es den Vorteil, mehrere Medien laufen lassen zu können (z.B. auch in einem Vorschaufenster).

Vieleicht findet ja jemannd den Fehler, warum das Video auf dem 2ten Desktop immerwieder nicht zu starten ist und sich in der Play- Funktion aufhängt.
Hier nun also das Programm:
Enumeration window
#hwnd
EndEnumeration
Enumeration gadgets
#MCI_Gadget
EndEnumeration

#ansicht_Normal = 0
#ansicht_vollbild = 1

Structure medium_struct
name$
x.i
y.i
w.i
h.i
speed.i
zoom.i
scrollpos_x.i
scrollpos_y.i
spiele_aus_liste.i
bild_einblenden.i
playlist.i
mci_pos.q
sound_onoff.i
EndStructure
Global medium.medium_struct


;----- Global
Global MCI_Geladen
Global TempMCI.s, TempMCI_alt.s
Global ansicht

Macro Rahmen_Aus(wnd)
SetWindowLongPtr_(WindowID(#hwnd), #GWL_STYLE, GetWindowLongPtr_(WindowID(#hwnd), #GWL_STYLE) &~ (#WS_DLGFRAME | #WS_BORDER | #WS_SIZEBOX))
EndMacro
Macro Rahmen_An(wnd)
SetWindowLongPtr_(WindowID(#hwnd), #GWL_STYLE, #WS_CLIPSIBLINGS | #WS_VISIBLE | #WS_CAPTION | #WS_SYSMENU|#WS_SIZEBOX|#WS_MAXIMIZEBOX|#WS_MINIMIZEBOX|#WS_EX_TOPMOST)
;SetWindowPos_(WindowID(wnd), 0,0,0,0,0,#SWP_NOSIZE|#SWP_NOMOVE|#SWP_NOZORDER|#SWP_FRAMECHANGED)
EndMacro

Procedure stop(a$)
MessageRequester("",a$)
EndProcedure


Procedure.s GetMciFileTypes(file$)
Protected Retval.i, Buffer.s
Select LCase(GetExtensionPart(File$))
Case "vob", "avi", "asf", "asx", "mpg", "m2v", "p2v", "mp4", "lsf", "lsx", "nsv", "mpeg", "dat", "wmv", "wax", "wvx", "wm", "wmx", "wmp", "webm"
DeviceType$ = "MPEGVIDEO";"MPEGVideo" ;
Case "mp3", "kar", "miz", "mod", "mdz", "nst", "stm", "stz", "s3m", "s3z", "it", "itz", "xm", "xmz", "mtm", "ult", "669", "far", "amf", "okt"
DeviceType$ = "MPEGVideo"
Case "ptm", "mp2", "mp1", "aac", "apl", "vlb", "m4a", "nsa", "ogg", "voc", "au", "snd", "aif", "aiff", "wma", "pls","flv"
DeviceType$ = "MPEGVideo"
Case "wav", "wave"
DeviceType$ = "MPEGVideo"; 'WaveAudio
Case "img" , "jpg" , "png" , "bmp", "gif"
DeviceType$ = "image" ;"MPEGVideo"
Case "mid", "midi", "rmi"
DeviceType$ = "Sequencer"
Case "cda"
DeviceType$ = "cdaudio"
Case "rm", "ram", "ra"
;DeviceType = eMCI_RealPlayer
DeviceType$ = "other"
Case "ivf"
DeviceType$ = "MPEGVIDEO2"
Case "txt"
DeviceType$ = "text"
Case "xspf"
DeviceType$ = "unbekannt"
Case "db"
DeviceType$ = "datenbank"
Default
If FileSize(File$) = -2
DeviceType$ = "ordner"
Else
DeviceType$ = "unbekannt" ;"MPEGVIDEO" ;"MPEGVideo" ;
EndIf
EndSelect;
;Debug DeviceType$

ProcedureReturn DeviceType$;Buffer
EndProcedure

Procedure MCI_Load(sFile.s)
Protected sBuffer.s = Space(255)
Protected sType.s
Protected nResult.l
Protected bVideo.i

; Falls noch ein Video ge?ffnet ist
If MCI_Geladen
;mciSendString_("close TempMCI", 0, 0, 0)
mciSendString_("close " + TempMCI_alt, 0, 0, 0)
;Delay(1000)
EndIf
MCI_Geladen = 0
Img_Geladen = 0

; --- Multimedia-Typ ermitteln
sType.s = GetMciFileTypes(sFile)
; --- kurzen Dateinamen ermitteln
a = GetShortPathName_(sFile, sBuffer, Len(sBuffer))
sFile = Left(sBuffer, a)
;Debug sFile

;HideGadget(#mci_gadget, 1)
open$ = "open " + Chr(34) + sFile + Chr(34) + " type " + sType + " alias " + tempMCI
fehler = mciSendString_(open$, 0, 0, 0)
Debug open$
If fehler : stop("Kann Datei" + #LF$ + sFile + #LF$ + " nicht öffnen") : EndIf
If fehler : ProcedureReturn fehler : EndIf

; --- Zeitformat auf Millisekunden einstellen
mciSendString_("set " + TempMCI + " time format milliseconds", #Null, #Null, #Null)
; --- AnzeigeFenster (Gadget) angeben
;mciSendString_("window " + TempMCI + " handle " + Str(WindowID(#hwnd)), 0,0,0)
fehler = mciSendString_("window " + TempMCI + " handle " + Str(GadgetID(#mci_gadget)), 0,0,0)
If fehler : Debug "Rendern Fehlgeschlagen " + Str(fehler) : EndIf

MCI_Geladen = 1
TempMCI_alt = TempMCI

ProcedureReturn fehler
EndProcedure

Procedure MCI_Stop()
flError = mciSendString_("stop " + TempMCI, 0, 0, 0)
EndProcedure

Procedure MCI_IsMoviePlaying()
; Gibt zurück, ob das Video läuft
Protected sBuffer.s = Space(255)

mciSendString_("status " + TempMCI + " mode", sBuffer, Len(sBuffer), 0)
If Left(sBuffer, 7) = "playing"
ProcedureReturn #True
Else ; : Debug sBuffer
ProcedureReturn #False
EndIf
EndProcedure

Procedure MCI_SetVideoSize(X, Y, W, H)
a$ = Str(X) + " " + Str(Y) + " " + Str(W) + " " + Str(H) + " "; + Chr(0)
mciSendString_("put " + TempMCI + " destination at " + a$, 0, 0, 0)
EndProcedure

Procedure MCI_PlayAtPosition(llMS.q)
; Setzt Position des Videos
Debug "Play Starten"
fehler = mciSendString_("play " + TempMCI + " from " + Str(llMS), 0, 0, 0)
;fehler = mciSendString_("put " + TempMCI + " destination", 0, 0, 0)
Debug "Fehler = " + Str(fehler)
Debug "Play Gestartet"
EndProcedure

Procedure MCI_GetVideoSize(*medium.medium_struct)
Protected sBuffer.s = Space(255)

mciSendString_("where " + TempMCI + " destination", sBuffer, Len(sBuffer), 0)
*medium\w = Val(StringField(sBuffer, 3, " "))
*medium\h = Val(StringField(sBuffer, 4, " "))
;Debug sBuffer
EndProcedure


Procedure.l GetPositionInFrames()
; Aktuelle Position in Frames
fsData.s = Space(128)
flError = mciSendString_("set " + TempMCI + " time format frames wait", 0, 0, 0);:Debug flError
flError = mciSendString_("status " + TempMCI + " position", fsData, 128, 0)
GetPositionInFrames.l = Val(fsData)
ProcedureReturn GetPositionInFrames
EndProcedure
;-
Procedure Get_Desktop_mit_der_Maus(desktops)
For i = desktops - 1 To 0 Step -1
If DesktopMouseX() => DesktopX(i)
ProcedureReturn i
EndIf
Next
ProcedureReturn 0
EndProcedure

Procedure Get_Desktop_mit_dem_Fenster(desktops)
For i = desktops - 1 To 0 Step -1
If WindowX(#hwnd) => DesktopX(i)
ProcedureReturn i
EndIf
Next
ProcedureReturn 0
EndProcedure

;-
Procedure resize_mcigadget(winw , winh); : Debug "resize_mcigadget"
If medium\w = 0 And medium\h = 0 : ProcedureReturn 0 : EndIf
Protected fx.d , fy.d
Debug medium\w
Debug medium\h
;winw + zoom
;winh + zoom * (winh/winw)
fx = winw / medium\w

h = medium\h * fx

If h > winh
y = 0
fy = winh / medium\h
w = medium\w * fy
x = (winw - w) / 2
h = winh
Else
y = (winh - h) / 2
w = winw
x = 0
EndIf
Debug "Position :"
Debug "x:" + Str(x) + " y:" + Str(y) + " w:" + Str(w) + " h:" + Str(h)
;ResizeGadget(#mci_gadget,10,10,WindowWidth(#hwnd)-20,WindowHeight(#hwnd)-20)
MCI_SetVideoSize(x+10, y+10, w-20, h-20)
;MCI_SetVideoSize(10,10,GadgetWidth(#MCI_Gadget)-20, GadgetHeight(#MCI_Gadget)-20)
EndProcedure
;-
;----- Fenster Proceduren
Procedure Window_Open()
fl = #PB_Window_SystemMenu
fl | #PB_Window_MinimizeGadget
fl | #PB_Window_MaximizeGadget
OpenWindow(#hwnd, 50,50,500,300,"Test Movie", fl)
SetWindowColor(#hwnd, #Red)
;ImageGadget(#MCI_Gadget, 0, 0, WindowWidth(#hwnd), WindowHeight(#hwnd),0)
CanvasGadget(#MCI_Gadget, 0, 0, WindowWidth(#hwnd), WindowHeight(#hwnd),0)

;Delay(2000)

desk = ExamineDesktops()
deskwin = 0
; x = DesktopX(deskwin)
; y = DesktopY(deskwin)
; w = DesktopWidth(deskwin)
; h = DesktopHeight(deskwin)
; rahmen_aus(#hwnd)
x = DesktopX(deskm) + 100
y = DesktopY(deskm) + 50
w = 500
h = 300
ansicht = #ansicht_Normal
rahmen_an(#hwnd)

ResizeWindow(#hwnd, x,y,w,h)

w = WindowWidth(#hwnd);, #PB_Window_InnerCoordinate)
h = WindowHeight(#hwnd);, #PB_Window_InnerCoordinate)
ResizeGadget(#MCI_Gadget, 10, 10, w-20,h-20)
TempMCI = "TempMCI_1"
EndProcedure

Procedure.s Movie_Laden(file$)
; Bietet Raum für eigene Erweiterungen.
titel$ = "Neuer Film"
StandardDatei$ = file$
Pattern$ = "Alle Dateien | *.*"
PatternPosition = 0
file$ = OpenFileRequester(Titel$, StandardDatei$, Pattern$, PatternPosition , 0)
ProcedureReturn file$
EndProcedure


;-===== Start
Window_Open()

laufen_lassen = 1 ; Hier zum ausprobieren anpassen.
If laufen_lassen ; Einmal auswählen, danach startet das selbe Movie immer wieder.
a$ = Movie_Laden(file$)
If a$ = "" : End : EndIf
file$ = a$
wiederholung = -1
EndIf

Repeat
If Not MCI_IsMoviePlaying()
If Not laufen_lassen
a$ = Movie_Laden(file$)
If a$ = "" : End : EndIf
file$ = a$
wiederholung = 0
Else
wiederholung + 1
EndIf
durchlauf + 1
Debug " "
Debug "Durchlauf " + Str(durchlauf) + " gestartet"
If wiederholung = 0
Debug "Neuer Film ausgewählt"
Else
Debug "Wiederholung " + Str(wiederholung)
EndIf

If TempMCI = "TempMCI_1" : TempMCI = "TempMCI_2" : Else : TempMCI = "TempMCI_1" : EndIf
MCI_Stop()
MCI_Load(file$)

MCI_GetVideoSize(@medium)
;Debug medium\w
;Debug medium\h
resize_mcigadget(GadgetWidth(#MCI_Gadget) , GadgetHeight(#MCI_Gadget))
MCI_PlayAtPosition(0)
EndIf

ev = WaitWindowEvent(20)
Select ev
Case #PB_Event_CloseWindow
ende = 1
Case #WM_KEYDOWN
;Debug EventwParam()
Select EventwParam()

Case #VK_ESCAPE
ende = 1

Case #VK_F1
laufen_lassen = 0
Debug "Nach jedem Movie- Ende neu auswählen"

Case #VK_F2
laufen_lassen = 1
Debug "Movie wird nach jedem Ende wiederholt"

Case #VK_N
MCI_Stop()
Debug "Durchlauf Abgebrochen"
a$ = Movie_Laden(file$)
If a$ = "" : End : EndIf
file$ = a$
durchlauf + 1
Debug " "
Debug "Durchlauf " + Str(durchlauf) + " gestartet"
Debug "Neuer Film ausgewählt"
wiederholung = 0

If TempMCI = "TempMCI_1" : TempMCI = "TempMCI_2" : Else : TempMCI = "TempMCI_1" : EndIf
MCI_Load(file$)
MCI_GetVideoSize(@medium)
resize_mcigadget(GadgetWidth(#MCI_Gadget) , GadgetHeight(#MCI_Gadget))
MCI_PlayAtPosition(0)

Case 176 , #VK_RIGHT;---- Taste Nächstes Movie
If TempMCI = "TempMCI_1" : TempMCI = "TempMCI_2" : Else : TempMCI = "TempMCI_1" : EndIf
;MCI_Stop()
MCI_Load(file$)
MCI_GetVideoSize(@medium)
;Debug medium\w
;Debug medium\h
resize_mcigadget(GadgetWidth(#MCI_Gadget) , GadgetHeight(#MCI_Gadget))
MCI_PlayAtPosition(0)

Case 70 ;---- Taste F
desktops = ExamineDesktops()
; --- Auf welchem Desktop ist die Maus
deskm = Get_Desktop_mit_der_Maus(desktops)
; --- Auf welchem Desktop ist das Fenster
deskw = Get_Desktop_mit_dem_Fenster(desktops)
; --- Die Bindings abschalten um Flackern zu verhindern
;UnbindEvent(#PB_Event_MoveWindow, @SizeWindowHandler(), #hwnd)
;UnbindEvent(#PB_Event_SizeWindow, @SizeWindowHandler(), #hwnd)
;HideWindow(#hwnd, 1)

If deskm <> deskw ; --- Desktops sind unterschiedlich

; --- Fenster auf Mausdesktop hohlen
x1 = WindowX(#hwnd) - DesktopX(deskw)
y1 = WindowY(#hwnd) - DesktopY(deskw)
x = DesktopX(deskm) + x1
y = DesktopY(deskm) + y1
w = WindowWidth(#hwnd)
h = WindowHeight(#hwnd)

Else

; --- Fenstergröße ändern
If ansicht = #ansicht_vollbild
x = DesktopX(deskm) + 100
y = DesktopY(deskm) + 50
w = 500
h = 300
ansicht = #ansicht_Normal
rahmen_an(#hwnd)
Else
x = DesktopX(deskm)
y = DesktopY(deskm)
w = DesktopWidth(deskm)
h = DesktopHeight(deskm)
ansicht = #ansicht_vollbild
rahmen_aus(#hwnd)
EndIf
EndIf
; --- Erledigt
ResizeWindow(#hwnd,x, y, w, h)
ResizeGadget(#mci_gadget,10,10,WindowWidth(#hwnd)-20,WindowHeight(#hwnd)-20)
resize_mcigadget(GadgetWidth(#MCI_Gadget) , GadgetHeight(#MCI_Gadget))
;BindEvent(#PB_Event_MoveWindow, @SizeWindowHandler(), #hwnd)
;BindEvent(#PB_Event_SizeWindow, @SizeWindowHandler(), #hwnd)
SetActiveWindow(#hwnd)

EndSelect

EndSelect
Until ende
Zuletzt geändert von BSP am 13.10.2024 10:02, insgesamt 1-mal geändert.
PB 5.31 (x86) & (x64) Win10
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: MCI Play

Beitrag von HeX0R »

Kann mal bitte ein Mod die Quote-Tags oben in Code-Tags ändern? Danke!

Back on track:
Wie oft passiert das denn bei Dir?
Ich brauchte etwa 80 Durchläufe, bis es einmal eingefroren war, weitere ~80, um festzustellen, dass es (wie zu erwarten) gar nichts mit dem zweiten Monitor zutun hat.
Es ist nämlich auch auf dem Hauptmonitor eingefroren.
Bei den seltenen Vorkommnissen macht die Fehlersuche natürlich nur bedingt Spaß.
Mir hat der Prozess nicht so wirklich gefallen, klar, hier geht's um ein Beispiel, aber dass das File ständig geschlossen und wieder geöffnet wird, fand ich ungünstig.
Also habe ich mal ein paar "wait" flags eingestreut, und siehe da, ... es ist öfter eingefroren :mrgreen:

Vielleicht solltest Du doch mal von der abgehalfterten MCI weg zu was modernerem wechseln.
Ich nehme eigentlich nur VLC, wobei ich ausser einem IPTV-Player und einem Enigma-Streamer nicht wirklich viel damit machen musste.
BSP
Beiträge: 201
Registriert: 01.02.2009 14:04

Re: MCI Play

Beitrag von BSP »

Hallo GeXOR.
Ganz herzlichen Dank, das Du Dir mal die Mühe gemacht hast zum ausprobieren.

Auf meinem Hauptdesktop ist der Fehler bei mir bisher nicht aufgetreten.
Auf dem 2ten dafür um so öfter.
Es gibt Filme, die wollen so gut wie garnicht, manche schaffen durchaus 3, 4, 6 oder mehr durchläufe, bei manchen tritt der Fehler so gut wie garnicht auf.

Schade, das die MCI's inzwischen solche Probleme machen.
Ich verstehe sie gut, sie sind etwas umfangreicher als die von PB und sie reichen (normalerweise) für meine Zwecke föllig aus.
So richtig grosse Anwendungen wie Schneiden, Zerlegen, zusammenführen u.s.w. will ich ja garnicht.
Für sowas hätte ich ja Profiprogramme wie z.B. Nero.
Na gut. Mal sehen, was noch so kommt.

Für den Fall, das noch jemannd Lust hat, mein Program mal auszuprobieren,
ich habe es etwas erweitert.
Nun gibt es 3 weiter Tasten:
Mit den Tasten "F1 / F2" kann man auswählen, ob der aktuelle Film wiederholt wird oder ob man nach jedem Filmende einen Neuen auswählt.
Mit der Taste "n" kann man jederzeit abbrechen und einen neuen Film auswählen.
Ausserdem zeigt der Debuger nun die Anzahl der durchläufe sowie die Anzahl der Wiederholungen an.
Ich habe es oben geändert.
Vielen Dank schon mal an alle, die Es noch ausprobieren wollen.
Gruß: Bernd
PB 5.31 (x86) & (x64) Win10
Antworten