Fettes Problem

  • ich bin dabei ein Programm zu machen zum aufnehmen von Videos ich hab volgenede Probleme :
    Wenn ich die frame rate verändere läuft das video super schnell (also je höher desto schneller) und wenn ich auf echtzeit habe hackelt das vor sich hin.

    2. Ich komm bei der einen Checkboc nicht weiter sie soll direkt das skript abspieln nachdem es aufgenommen wurde.

    3. Beenden funzt nur mit dem Hotkey

    4. Die hotkeys funktionieren nicht

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <AVIWriter.au3>
    #include <File.au3>
    #include <ScreenCapture.au3>
    #include <SliderConstants.au3>
    #include <GUIListBox.au3>
    #include <EditConstants.au3>

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

    Global $Capture

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

    HotKeySet("^v", "_startvideo")
    HotKeySet("{ESC}", "_close")
    HotKeySet("^p")
    ;_StartAviLibrary()
    ;$avi = _CreateAvi("C:\Crocoframe\Videos\" & "\crocoframe.avi", 5,200,200)
    ;Break (0)
    IniWrite ("confic.ini", "C:\Crocoframe\" , "AVINAME", "crocoframe2")
    DirCreate("C:\Crocoframe\")
    DirCreate("C:\Crocoframe\Videos\")
    DirCreate("C:\Crocoframe\EasyScreen\")
    DirCreate("C:\Crocoframe\EasyScreen\Banner\")
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("CrocoFrame © CrocoJunk ", 548, 250, 192, 124)
    $Pic1 = GUICtrlCreatePic("", 0, 0, 545, 89, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    $Label1 = GUICtrlCreateLabel("Video aufnehmen", 8, 112, 87, 17)
    $Button1 = GUICtrlCreateButton("Play (STRG+V) ", 120, 112, 100, 25, $WS_GROUP)
    $Label3 = GUICtrlCreateLabel("Video stoppen", 8, 192, 72, 17)
    $Button3 = GUICtrlCreateButton("Video Beenden (ESC)", 120, 200, 120, 25, $WS_GROUP)
    $check = GUICtrlCreateCheckbox("Video starten nachdem aufgenommen", 256, 120, 193, 17)
    $check2 = GUICtrlCreateCheckbox("Video starten nach", 256, 168, 113, 17)
    $menu1 = GUICtrlCreateMenu("Datei")
    $item1 = GUICtrlCreateMenuItem("Optionen", $menu1)
    $item2 = GUICtrlCreateMenuItem("Easy Screen", $menu1)
    GUICtrlCreateInput("", 376, 168, 57, 21)
    $Label4 = GUICtrlCreateLabel("Sekunden", 448, 168, 53, 17)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    filedelete ("C:\Crocoframe\Videos\crocoframe.avi")
    If Not @error Then
    MsgBox(64, "Video", "Das Video startet jetz!")
    EndIf
    $Capture = True
    _StartAviLibrary()
    $avi = _CreateAvi("C:\Crocoframe\Videos\" & "\crocoframe.avi", 5, @DesktopWidth, @DesktopHeight)
    AdlibRegister("_close",30000) ;vorsichtshalber Buttons funktionieren nicht Hotkey ESC klappt aber
    ConsoleWrite("STARTED" & @CRLF)
    While $Capture
    $m = MouseGetPos()
    $hBmp = _ScreenCapture_Capture("", 0,0,-1,-1)
    _AddHBitmapToAvi($avi, $hBmp)
    _WinAPI_DeleteObject($hBmp)
    Sleep(200)
    WEnd
    ConsoleWrite("STOPPED" & @CRLF)
    AdlibUnRegister("_close")

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

    Case $Button3
    ConsoleWrite("STOP" & @CRLF)
    _close()
    Case $check
    $Read = GUICtrlRead ($check)
    if $read = 1 Then
    Sleep (1)
    Run ("Windows Media Player.exe" & "C:\Crocoframe\Videos\crocoframe.avi")
    EndIf
    Case $check2
    Case $item1
    _optionen()
    Case $item2
    _screen()

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

    EndSwitch
    WEnd

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

    Func _startvideo()
    filedelete ("C:\Crocoframe\Videos\crocoframe.avi")
    If Not @error Then
    MsgBox(64, "Video", "Das Video startet jetz!")
    EndIf
    $Capture = True
    _StartAviLibrary()
    $avi = _CreateAvi("C:\Crocoframe\Videos\" & "\crocoframe.avi", 5, @DesktopWidth, @DesktopHeight)
    AdlibRegister("_close",30000) ;vorsichtshalber Buttons funktionieren nicht Hotkey ESC klappt aber
    ConsoleWrite("STARTED" & @CRLF)
    While $Capture
    $m = MouseGetPos()
    $hBmp = _ScreenCapture_Capture("", 0,0,-1,-1)
    _AddHBitmapToAvi($avi, $hBmp)
    _WinAPI_DeleteObject($hBmp)
    Sleep(200)
    WEnd
    ConsoleWrite("STOPPED" & @CRLF)
    AdlibUnRegister("_close")
    EndFunc

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

    Func _optionen()
    EndFunc
    Func _screen()
    EndFunc
    Func _close()
    _CloseAvi($avi)
    _StopAviLibrary()
    $Capture = False
    EndFunc

    [/autoit]

    hoffe auf schnelle Antwort

    :)

    mfg
    crocojunk

    Einmal editiert, zuletzt von crocojunk (16. Juli 2010 um 18:45)

  • Zitat


    3. Beenden funzt nur mit dem Hotkey

    4. Die hotkeys funktionieren nicht


    Klingt ein wenig paradox, nicht wahr? :D

    Meintest du das mit der Checkbox vielleicht so?

    [autoit]

    Case $check
    if BitAND(GUICtrlRead($check), $GUI_CHECKED) = $GUI_CHECKED Then
    Run ("Windows Media Player.exe" & "C:\Crocoframe\Videos\crocoframe.avi")
    EndIf

    [/autoit]
  • name22: Mach es doch verständlicher ;)

    [autoit]

    Case $check
    $state = GUICtrlGetState($check)
    If $state = $GUI_CHECKED Then
    Run ("Windows Media Player.exe" & "C:\Crocoframe\Videos\crocoframe.avi")
    EndIf

    [/autoit]

    @crocojunk: Meinst du, wenn gechecked wird oder direkt nachdem aufnehmen ausgeführt wurde und dann gestoppt wurde? Dann müsste man ja nur die Prüfung in der Func zum stoppen des aufnehmens einbringen ^^
    Also war meine Vermutung richtig. Das solltest du mit der eben genannten Beschreibung eigentlich hinbekommen, wir sind ja keine "Vorkauer".

  • dachte ich ja auch aber er startet es danach nicht

    wegen 4. das hat sich gelöst hatte falschen hotkey gedrückt. (Ich weiß ich bin dumm -.-)

  • ich weiß nur von den pfeiltasten die nummern die anderen kenn ich nicht.

    sry

  • ohh bin ich noch nicht drauf gekommen
    danke


    kann mir einer wegen der framerate helfen??

  • name22: Mach es doch verständlicher ;)

    [autoit]

    Case $check
    $state = GUICtrlGetState($check)
    If $state = $GUI_CHECKED Then
    Run ("Windows Media Player.exe" & "C:\Crocoframe\Videos\crocoframe.avi")
    EndIf

    [/autoit]

    @crocojunk: Meinst du, wenn gechecked wird oder direkt nachdem aufnehmen ausgeführt wurde und dann gestoppt wurde? Dann müsste man ja nur die Prüfung in der Func zum stoppen des aufnehmens einbringen ^^
    Also war meine Vermutung richtig. Das solltest du mit der eben genannten Beschreibung eigentlich hinbekommen, wir sind ja keine "Vorkauer".


    Mit GUICtrlGetState wird es nicht klappen, da bekommst du egal ob gechecked oder nicht immer 80 zurück. Und die 80 setzt sich zusammen aus $GUI_ENABLE und $GUI_SHOW. Es klappt so wie name22 es schon vorgeschlagen hat ;).

    Edit: Wieso machen wir das eigentlich nochmal immer mit BitAND und nicht so?

    [autoit]

    If GUICtrlRead($hCheck) = $GUI_CHECKED Then

    [/autoit]
    • Offizieller Beitrag

    Edit: Wieso machen wir das eigentlich nochmal immer mit BitAND und nicht so?

    [autoit]

    If GUICtrlRead($hCheck) = $GUI_CHECKED Then

    [/autoit]

    Weil der mit GUICtrlRead($hCheck) ausgelesene Wert nicht NUR $GUI_CHECKED oder $GUI_UNCHECKED sein kann, sondern ein Statuswert ist der noch andere Werte enthalten kann. Um also aus einem Summenwert einen speziellen abzuprüfen ist BitAND(Status, gesuchter_Wert) erforderlich.

  • Weil der mit GUICtrlRead($hCheck) ausgelesene Wert nicht NUR $GUI_CHECKED oder $GUI_UNCHECKED sein kann, sondern ein Statuswert ist der noch andere Werte enthalten kann. Um also aus einem Summenwert einen speziellen abzuprüfen ist BitAND(Status, gesuchter_Wert) erforderlich.


    Genau, das wars. Aber der gibt mir nur 4 oder 1 zurück, halt gechecked oder nicht gechecked, aber nicht ob show oder hide oder enable oder disable, weil dann müsste er ja den summenwert ausgeben.

  • Genau, das wars. Aber der gibt mir nur 4 oder 1 zurück, halt gechecked oder nicht gechecked, aber nicht ob show oder hide oder enable oder disable, weil dann müsste er ja den summenwert ausgeben.

    Das soll er ja auch.
    Wenn du den Summenwert willst musst du natürlich nur

    [autoit]

    GUICtrlRead($check)

    [/autoit]

    nehmen

    mfg (Auto)Bert

  • Ja der gibt mir aber halt 1 oder 4 zurück, ich hatte eigentlich größere Werte vermutet.

  • @m-obi,

    dann setzte doch einfach einmal mehrere Statis, und lass es dir danach ausgeben

    [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Add_Constants=n
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <ButtonConstants.au3>
    #include <Constants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Global $oldStatus

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

    GUICreate("Test checkBox ", 300, 300)
    Local $idchkTest = GUICtrlCreateCheckbox("checkBox", 20, 40, 60)
    Local $idbtnTest = GUICtrlCreateButton("&Test", 150, 190, 130)
    GUISetState(@SW_SHOW)
    $oldStatus = -1
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idbtnTest
    MsgBox(0, "", GUICtrlGetState($idchkTest))
    GUICtrlSetState($idchkTest, BitOR($GUI_CHECKED,$GUI_Hide,$GUI_Enable))
    If GUICtrlRead($idchkTest) = BitAND($GUI_CHECKED, $GUI_Enable, $GUI_Show) Then
    MsgBox(0, "CheckBox", "ist angeCHECKED, sichtbar und aktiviert")
    Else
    MsgBox(0, "CheckBox", "ist entweder nicht angeCHECKED, oder nicht sichtbar oder nicht aktiviert")
    EndIf
    EndSwitch
    WEnd

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

    mfg (Auto)Bert

  • Dann reicht es ja wenn man es damit ausliest, dann muss man nicht diese lange BitAND-Möglichkeit schreiben.

  • das mit der checkbox hab ich jetzt hinbekommen

    könnt ihr mir jetzt wegen der framerate helfen??

    also bei mir ist es flüssig bei meinen freund ist es schneller als orginal zeit deswegen hoffe ich ihr könnt mir helfen.


    HOFFE AUF SCHNELLE ANTWORT :D

    Danke

    mfg crocojunk

    Einmal editiert, zuletzt von crocojunk (2. Juni 2010 um 15:12)

  • sorry für meine Ungelduld aber ich warte seit 2 tagen auf eine Antwort und es hat sich nichts ergeben.

  • die framerate stellt man in zeile 55 um da steht momentan 5 das problem ist aber das es bei meinem freund dann zu schnell läuft meine frage ist ob es sich vlt dann anpassen kann so das es flüssig läuft und auch nicht zu schnell und zu langsam.