GUI AVI Video Problem

  • Hallo,
    also ich habe eine GUI mit einem AVI Video erstellt, mein Code sieht so aus:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <AVIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _play()

    [/autoit] [autoit][/autoit] [autoit]

    Func _play()
    GUICreate("AVI Play", 420, 110)
    GUISetState(@SW_SHOW)
    GUICtrlCreateAvi("avi.avi", -1, 0, 0, 420, 110, $ACS_AUTOPLAY)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $MSG = GUIGetMsg()
    Select
    Case $MSG = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    EndFunc

    [/autoit]


    So, bis hier hin läuft alles wunderbar, aber wenn ich die GUI nun starte sieht das ungefähr ganze so aus:

    [Blockierte Grafik: http://img13.imageshack.us/img13/6927/screenbm.png]

    Wenn ich meine AVI ganz normal mit einem Media Player starte läuft sie wunderbar ... :D
    Und fals es noch weiterhilft: Ich habe die beiden *.gif Bilder mit dem Programm "UnFREEz" zu einer *.gif Datei gemacht,
    und dann mit dem "Open Video Converter" (Full Frames [uncompressed]) zu *.avi convertiert.

    Hoffe ihr könnt mir weiterhelfen ... :D

    PS: Ich habe noch mal alle Bilder, Videos und das Script Angehängt ...

    Gruß
    hugohansen

    3 Mal editiert, zuletzt von hugohansen (16. Dezember 2009 um 15:38)

  • Das Problem gabs schon öfters ;)

    Entweder du verwendest https://autoit.de/VirtualDub um dein Gif zu konvertieren oder verwendest diese UDF von Xeno um das Gif direkt anzuzeigen.

    Spoiler anzeigen
    [autoit]

    #include-once
    #include<IE.au3>
    ;===============================================================================
    ;
    ; Function Name: _GUICtrlCreateGIF()
    ; Description: Create an Animated GIF control
    ; Parameter(s): $gif [required] path and filename of the animated GIF
    ; $x [optional] x pos of the top-left corner
    ; $y [optional] y pos of the top-left corner
    ; $border [optional] 0 = no border
    ; any other = sunken border
    ; Requirement(s): #include <IE.au3>
    ; Return Value(s):
    ; controlID of the control created
    ; Author(s): elgabionline, gafrost, Ed_Maximized
    ;
    ;===============================================================================
    Func _GUICtrlCreateGIF($gif,$x=0,$y=0,$border=0)
    Local $pwidth,$pheight,$oIE,$GUIActiveX
    _GetGifPixWidth_Height($gif, $pwidth, $pheight)
    $oIE = ObjCreate("Shell.Explorer.2")
    $GUIActiveX = GUICtrlCreateObj($oIE, $x, $y, $pwidth, $pheight)
    $oIE.navigate ("about:blank")
    While _IEPropertyGet ($oIE, "busy")
    Sleep(100)
    WEnd
    $oIE.document.body.background = $gif
    $oIE.document.body.scroll = "no"
    if $border=0 then $oIE.document.body.style.border = "0px"
    Return $oIE
    EndFunc
    ;===============================================================================
    ;
    ; Function Name: _GUICtrlStopGIF()
    ; Description: stop an Animated GIF control created with _GUICtrlCreateGIF()
    ; Parameter(s): $Control [required] controlID of the control returned by _GUICtrlCreateGIF()
    ;
    ; Requirement(s): #include <IE.au3>
    ; Return Value(s):
    ; none
    ; Author(s): lod3n, Ed_Maximized
    ;
    ;===============================================================================
    Func _GUICtrlStopGIF($Control)
    _IEAction ($Control, "stop" ) ; stop
    EndFunc
    ;===============================================================================
    ;
    ; Function Name: _GUICtrlResumeGIF()
    ; Description: resume an Animated GIF control created with _GUICtrlCreateGIF()
    ; Parameter(s): $Control [required] controlID of the control returned by _GUICtrlCreateGIF()
    ;
    ; Requirement(s): #include <IE.au3>
    ; Return Value(s):
    ; none
    ; Author(s): lod3n, Ed_Maximized
    ;
    ;===============================================================================
    Func _GUICtrlResumeGIF($Control)
    $Control.document.body.background = $Control.document.body.background ;resume
    EndFunc
    ;===============================================================================
    ;
    ; Function Name: _GetGifPixWidth_Height()
    ; Description: return the size of a GIF image in pixels
    ; Parameter(s): $s_gif [required] path and filename of the animated GIF
    ;
    ; Requirement(s): #include <IE.au3>
    ; Return Value(s):
    ; $pwidth = width of the GIF in pixels
    ; $pheight = height of the GIF in pixels
    ; Author(s): gafrost
    ;
    ;===============================================================================
    Func _GetGifPixWidth_Height($s_gif, ByRef $pwidth, ByRef $pheight)
    If FileGetSize($s_gif) > 9 Then
    Local $sizes = FileRead($s_gif, 10)
    ConsoleWrite("Gif version: " & StringMid($sizes, 1, 6) & @LF)
    $pwidth = Asc(StringMid($sizes, 8, 1)) * 256 + Asc(StringMid($sizes, 7, 1))
    $pheight = Asc(StringMid($sizes, 10, 1)) * 256 + Asc(StringMid($sizes, 9, 1))
    ConsoleWrite($pwidth & " x " & $pheight & @LF)
    EndIf
    EndFunc ;==>_GetGifPixWidth_Height

    [/autoit]
  • Also die UDF <IE.au3> habe ich schon, soll ich nun die neuen Funktionen von Xeno einfach dazukopieren oder eine neue UDF erstellen? :D

  • Also die UDF <IE.au3> habe ich schon, soll ich nun die neuen Funktionen von Xeno einfach dazukopieren oder eine neue UDF erstellen? :D

    Das kannst du eigentlich machen, wie du lustig bist :D , jedoch würde ich dir empfehlen einfach den Quellcode zu kopieren, da es ja schon eine UDF ist und dann wie gehabt zu includen.

  • Also das hat ja schonmal geklappt mit der UDF, aber nun zeig der mir garnichts mehr an, d.h. ein graues Bild ... ;(

  • Also das hat ja schonmal geklappt mit der UDF, aber nun zeig der mir garnichts mehr an, d.h. ein graues Bild ... ;(

    So können wir dir schlecht helfen 8|
    Am besten du zeigst uns mal deinen Quellcode und die Dateien, die du benutzt hast, also das Gif oder die Avi Datei.

  • Das hab ich dir doch schon bereits geschrieben 8|?(


    Weißt du nicht, wie man die UDF oder VirtualDub verwendet?

  • Das hab ich dir doch schon bereits geschrieben 8| ?(


    Weißt du nicht, wie man die UDF oder VirtualDub verwendet?

    Also mit der UDF passsiert gernichts (D.h. Die GUI bleibt grau ... wie schon mals erwähnt...) und VirtualDub ist mal wieder zu kompliezirt für mich, wenn ich mein AVI File da öffne soll ich dann eine "Compression..." machen, und wenn ja mit welchem Codec? :wacko:

    Einmal editiert, zuletzt von hugohansen (15. Dezember 2009 um 19:03)

  • Wie auch schon gesagt kann dir keiner ohne Quellcode helfen.. :thumbdown:

    Doch hier mal ein Beispiel mit der UDF von Xeno:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.0.0
    Author: hugohansen

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    AVI Play

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------
    #include <GUIConstantsEx.au3>
    #include <AVIConstants.au3>
    #include <gif.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _play()

    [/autoit] [autoit][/autoit] [autoit]

    Func _play()
    GUICreate("AVI Play", 420, 110)
    GUISetState(@SW_SHOW)
    _GUICtrlCreateGIF(@scriptdir&"\gif.gif", 1, 1 )

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $MSG = GUIGetMsg()
    Select
    Case $MSG = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    EndFunc

    [/autoit]

    Wobei hier das @ScriptDir wichtig, denn sonst wird nur ein weißes Feld angezeigt, versteh ich selbst nicht ... ?(?(


    Zu VirtualDub:

    • Du öffnest die VirtualDub.exe
    • fügst dein Animiertes Gif(nicht die bereits konvertierte Avi Datei) per Drag&Drop ein
    • danach klickst du auf "File" und "Save as Avi..."
  • Zu VirtualDub:

    • Du öffnest die VirtualDub.exe
    • fügst dein Animiertes Gif(nicht die bereits konvertierte Avi Datei) per Drag&Drop ein
    • danach klickst du auf "File" und "Save as Avi..."

    Hat geklappt :)
    Dankeschön ;)