wie ihr in der überschrift lesen könnt wollte ich fragen ob es möglich ist mit autoit ein programm zu schreiben das videos vom desktop aufnimmt??
wenn ja wie lautet der befehl?
wie ihr in der überschrift lesen könnt wollte ich fragen ob es möglich ist mit autoit ein programm zu schreiben das videos vom desktop aufnimmt??
wenn ja wie lautet der befehl?
Zitatwenn ja wie lautet der befehl?
Glaubst du es gibt einen fertigen Befehl der dir ein Video vom Desktop aufnimmt?
Das hier kann eine avi Datei aus Bitmaps zusammenbasteln.
Du musst also nur noch ScreenShots in regelmäßigen Abständen machen und diese dann in eine avi packen.
ist das ein include oder was ist das??
Ja,
so wie es aussieht schon, gibts ja da auch zum Download und im folgenden Script ist die included
Sorry,
aber wenn du da net durchblickst ( ist ziemlich einfach ), dann lass es am besten und lade dir ein anderes Programm, was das schon kann, runter
oh entschuldigung wenn ich eine frage gestellt habe wo ich mir sicher sein wollte ob es auch stimmt.
ich würde dir vorschlagen du guckst dir
[autoit]
_ScreenCapture_Capture()
an und suchst im Englichschen forum nach AVI Writer UDF
an die anderen kann ich das machen das er fullscreen aufnimmt??
du brauchst nur
[autoit]
_ScreenCapture_Capture(@scriptdir & "\cap.jpg")
machen dann nimmt der fullscreen auf
würde das video nicht ruckeln also zuwenig fps haben?
@Sprenger
1. Hab ich schon den Link zu der AVI Writer UDF gepostet.
2. Würde ich das ganze niemals in eine Datei speichern, da es einfach viel Zeit in Anspruch nimmt.
Zitatwürde das video nicht ruckeln also zuwenig fps haben?
mit angenommenen 25 fps (Videoformat) kannst du dir ausrechnen wie lange ein Schreibzyklus eines Screencaptures() dauern darf. 1000ms/25=40ms
Da sich auf dem Desktop idR ausser Mauszeigern und ggf einigen Buchstaben nicht viel bewegt, ist enormes Einsparpotential vorhanden. Es muss nur z.B. jeder 10. Frame als Vollbild gespeichert werden, bei den dazwischenliegenden Frames werden nur die Änderungen im Bild gespeichert/abgespielt.
Ein simpler "Video-Recorder/Abspieler". Wäre mal eine schöne Aufgabe für ein µIt!
mit der technik könnte man dann auch eine teamviever konkurrenz über tcp hinbekommen
Weil so komme ich gerade mal auf 400ms pro screenshot
Ja, denn eigendlich braucht man keine 25 Screenshots auf der Platte bzw bei der Übertragung. Wenn man den Devicecontext des Desktops per bitblt (und dem passenden $iRop) Parameter mit dem vorherigen "Frame" vergleicht, ergibt sich ein "Differenzbild". Überall dort, wo KEINE Änderung vorkommt, bleibt deas Bild schwarz. Gewissermassen werden nur die veränderten Bildteile markiert. Da ein Bitblt in Hardware ausgeführt wird, dauert es nur einige Millisekunden. Die "Kompression" ist eigentlich easy, da die schwarzen "Pixel" einfach nur gezählt werden müssen. Also etwa so: (Schwarz 18344 mal), (Pixelfarbe), (Pixelfarbe), (Pixelfarbe), (Schwarz 312 mal), (Pixelfarbe)....
Mal angenommen, der Mauszeiger ist 30x40 Pixel groß und ändert die Position, dann würden auf einem 1680x1050 Pixel grossen Bildschirm nur die 30x40 Pixel plus ca. 400Bytes für die "schwarzen" Pixel übertragen werden. Insgesamt also knapp 5kb Daten. Diese "Mini(de)kompression" könnte man aus Geschwindigkeitsgründen als dll ausführen, einmal als 32-Bit, einmal als 64-Bit-dll.
Andererseits wäre die Frage, was bei einer JPG-Kompression an Dateigröße herauskommen würde, dann könnte man alles komplett in AutoIt machen...
also mein ziel ist es ein programm schreiebn zum aufnehmen von videos.
nur mit den Fullscreen bekomme ich das nicht hin.
ich hab ein problem immer wenn ich auf play drücke kommt ein error aber nicht vom script
#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>
HotKeySet ("^v")
HotKeySet ("{ESC}","close")
HotKeySet ("^p")
_StartAviLibrary()
$avi = _CreateAvi("C:\Crocoframe\Videos\" & "\crocoframe.avi", 5,200,200)
Break (0)
DirCreate ("C:\Crocoframe\")
DirCreate ("C:\Crocoframe\Videos\")
DirCreate ("C:\Crocoframe\Bilder\")
#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)
$Label2 = GUICtrlCreateLabel("Video Pausieren", 8, 152, 81, 17)
$Button2 = GUICtrlCreateButton("Pause (P)", 120, 152, 75, 25, $WS_GROUP)
$Label3 = GUICtrlCreateLabel("Video stoppen", 8, 192, 72, 17)
$Button3 = GUICtrlCreateButton("Video Beenden (ESC)", 120, 200, 120, 25, $WS_GROUP)
$Checkbox1 = GUICtrlCreateCheckbox("Video starten nachdem aufgenommen", 256, 120, 193, 17)
$Checkbox2 = 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 ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
if not @error Then
MsgBox (64, "Video", "Das Video startet jetz!")
EndIf
_StartAviLibrary()
$avi = _CreateAvi("C:\Crocoframe\Videos\" & "\crocoframe.avi", 5,200,200)
Do
$m = MouseGetPos()
$hBmp = _ScreenCapture_Capture("", $m[0] - 100, $m[1] - 100, $m[0] + 100, $m[1] + 100, True)
_AddHBitmapToAvi($avi, $hBmp)
_WinAPI_DeleteObject($hBmp)
Sleep(200)
Until False
Case $Button2
Case $Button3
close()
Case $Checkbox1
Case $Checkbox2
case $item1
_optionen()
case $item2
_screen()
EndSwitch
WEnd
Func _optionen()
[/autoit] [autoit][/autoit] [autoit]EndFunc
Func _screen()
EndFunc
Func close()
_CloseAvi($avi)
_StopAviLibrary()
EndFunc
ihr braucht auch noch die #include (wer sie nicht hat)
ähhh???
[autoit]_CreateAvi("C:\Crocoframe\Videos\" & "\crocoframe.avi", 5,200,200)
[/autoit]was soll das "&" und die 2 "\"
machs mal so:
[autoit]_CreateAvi("C:\Crocoframe\Videos\crocoframe.avi", 5,200,200)
[/autoit](theoretisch)
EDIT:
okay lustig bei mir stürzt gleich die ganze autoit3.exe ab
ich glaub das 2te _StartAviLibrary und $avi = _CreateAvi(@ScriptDir & "\crocoframe.avi", 5,200,200) in der whileis das problem
Hallo crocojunk,
durch das Include-File scheinen die normalen Messages für GuiGetMsg nicht mehr zu funktionieren. Hier einmal das Skript zu Testzwecken mit AdLibRegister so abgeändert, dass 10 Sekunden aufgenommen werden:
#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>
Global $Capture
[/autoit] [autoit][/autoit] [autoit]HotKeySet("^v")
HotKeySet("{ESC}", "close")
HotKeySet("^p")
;_StartAviLibrary()
;$avi = _CreateAvi("C:\Crocoframe\Videos\" & "\crocoframe.avi", 5,200,200)
;Break (0)
DirCreate("C:\Crocoframe\")
DirCreate("C:\Crocoframe\Videos\")
DirCreate("C:\Crocoframe\Bilder\")
#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)
$Label2 = GUICtrlCreateLabel("Video Pausieren", 8, 152, 81, 17)
$Button2 = GUICtrlCreateButton("Pause (P)", 120, 152, 75, 25, $WS_GROUP)
$Label3 = GUICtrlCreateLabel("Video stoppen", 8, 192, 72, 17)
$Button3 = GUICtrlCreateButton("Video Beenden (ESC)", 120, 200, 120, 25, $WS_GROUP)
$Checkbox1 = GUICtrlCreateCheckbox("Video starten nachdem aufgenommen", 256, 120, 193, 17)
$Checkbox2 = 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 ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
If Not @error Then
MsgBox(64, "Video", "Das Video startet jetz!")
EndIf
$Capture = True
_StartAviLibrary()
$avi = _CreateAvi("C:\Crocoframe\Videos\" & "\crocoframe.avi", 5, 200, 200)
AdlibRegister("close",10000) ;vorsichtshalber Buttons funktionieren nicht Hotkey ESC klappt aber
ConsoleWrite("STARTED" & @CRLF)
While $Capture
$m = MouseGetPos()
$hBmp = _ScreenCapture_Capture("", $m[0] - 100, $m[1] - 100, $m[0] + 100, $m[1] + 100, True)
_AddHBitmapToAvi($avi, $hBmp)
_WinAPI_DeleteObject($hBmp)
Sleep(200)
WEnd
ConsoleWrite("STOPPED" & @CRLF)
AdlibUnRegister("close")
Case $Button2
Case $Button3
ConsoleWrite("STOP" & @CRLF)
close()
Case $Checkbox1
Case $Checkbox2
Case $item1
_optionen()
Case $item2
_screen()
EndSwitch
WEnd
Func _optionen()
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_optionen
Func _screen()
EndFunc ;==>_screen
Func close()
_CloseAvi($avi)
_StopAviLibrary()
$Capture = False
EndFunc ;==>close
hier gibt es ein funktionierendes Skript AviCapture
das er die namen automatisch ändert dazu brauch ich eine ini datei oder?
ich hatte die idee mit iniwrite das zu machen.
doch irgendwie funktioniert das nicht
ich hab das so
[autoit]
IniWrite ("confic.ini", "C:\Crocoframe\" , "AVINAME", "crocoframe2")
und in der ini steht das
[AVINAME]
crocoframe1