avifil32.dll
Re: avifil32.dll
@deify ich wollte ja schon .. hatte aber keine Zeit bisher
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
- deify
- Beiträge: 141
- Registriert: 29.03.2010 22:01
- Computerausstattung: Win7 64bit
AMD Phenom II X4 940
NVIDIA GeForce GTS 250
4GB RAM - Kontaktdaten:
Re: avifil32.dll
Also hier nochmal alles als hübsche .zip zum testen (:
http://ft.fckitupload.com/fYEWm/Kegelcam-Projekt.zip
@bobobo: kein Problem, ich dachte blos der thread wäre in Vergessenheit geraten und ich wusste nicht ob sich noch Andere beteiligen.
http://ft.fckitupload.com/fYEWm/Kegelcam-Projekt.zip
@bobobo: kein Problem, ich dachte blos der thread wäre in Vergessenheit geraten und ich wusste nicht ob sich noch Andere beteiligen.
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
Re: avifil32.dll

da geht gar nichts ..
hab hier "nur" eine olle USBWEbCam und die kann man mit dem escapidings---------------------------
Fehler
---------------------------
Es ist ein Fehler beim Starten der Webcams aufgetreten!
---------------------------
OK
---------------------------
wohl nicht korrekt ansprechen.
das
http://www.purebasic.fr/german/viewtopi ... 36#p292236
geht allerdings
amcap zeichnet auch auf
und das (auch mit escapi)
http://www.purebasic.fr/english/viewtop ... 19#p331619
funktioniert auch
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
- deify
- Beiträge: 141
- Registriert: 29.03.2010 22:01
- Computerausstattung: Win7 64bit
AMD Phenom II X4 940
NVIDIA GeForce GTS 250
4GB RAM - Kontaktdaten:
Re: avifil32.dll
das problem mit der avicap.dll war für mich, dass ich eben maximal 2 webcams zu laufen gebracht habe, daher wollte ich auf eine möglichkeit umsteigen, die das Bild aus dem Speicher direkt in ein .tga (oder ähnliches) umwandelt und in ein Videoformat abspeichert... Somit hätte ich noch eine weitere (ähnlich funktionierende) MEthode finden müssen und wäre spätestens beim schreiben des Videoformats auf einen gemeinsamen Nenner gekommen.
Ich hatte mir sowieso schon überlegt ob ich auf avicap oder etwas anderes umsteige, da ich momentan sowieso nur 2 cams benutze und somit auch keine Probleme haben dürfte, eigentlich sollte damit ja auch das aufnehmen problemlos klappen...
EDIT: Probier doch mal den Code mit der escapi.dll , oder funktioniert es rein wegen der cam nicht?
mfg deify
Ich hatte mir sowieso schon überlegt ob ich auf avicap oder etwas anderes umsteige, da ich momentan sowieso nur 2 cams benutze und somit auch keine Probleme haben dürfte, eigentlich sollte damit ja auch das aufnehmen problemlos klappen...
EDIT: Probier doch mal den Code mit der escapi.dll , oder funktioniert es rein wegen der cam nicht?
Code: Alles auswählen
EnableExplicit
;- ImageDecoder
UseTGAImageDecoder()
;- IncludeFile
IncludeFile "escapi.pbi"
;- escapiOpen
If escapiOpen() = 0
MessageRequester("Kamera", "DLL 'escapi.dll' nicht vorhanden!")
End
EndIf
;- Enumerations / DataSections
;- Windows
Enumeration
#Window_0
EndEnumeration
;- Gadgets
Enumeration
#Image_0
#Image_1
EndEnumeration
;- Image
Enumeration
#Image_Capture
EndEnumeration
;- Structure
Structure TGA_HEADER
imageid.a
colourmaptype.a
imagetype.a
colourmapstart.u
colourmaplength.u
colourmapbits.a
xstart.u
ystart.u
width.u
height.u
pixeldepth.a
descriptor.a
EndStructure
Structure fps_struc
fps_soll.i
fps_delay.i
fps_counter.i
fps_timer.i
fps_res.i
EndStructure
Structure AVISTREAMINFO
fccType.l
fccHandler.l
dwFlags.l
dwCaps.l
wPriority.w
wLanguage.w
dwScale.l
dwRate.l
dwStart.l
dwLength.l
dwInitialFrames.l
dwSuggestedBufferSize.l
dwQuality.l
dwSampleSize.l
rcFrame.RECT
dwEditCount.l
dwFormatChangeCount.l
szName.c[64]
EndStructure
Structure AVIFILEINFO
dwMaxBytesPerSec.l
dwFlags.l
dwCaps.l
dwStreams.l
dwSuggestedBufferSize.l
dwWidth.l
dwHeight.l
dwScale.l
dwRate.l
dwLength.l
dwEditCount.l
szFileType.c[64]
EndStructure
Structure AVICOMPRESSOPTIONS
fccType.l
fccHandler.l
dwKeyFrameEvery.l
dwQuality.l
dwBytesPerSecond.l
dwFlags.l
*lpFormat
cbFormat.l
*lpParms
cbParms.l
dwInterleaveEvery.l
EndStructure
;- Define
Define Event.i, EventWindow.i, EventGadget.i, EventType.i, EventMenu.i
;- Global
Global quit.i, q1.i, q2.i, capture01TH.i, capture02TH.i
Procedure OpenWindow_Window_0()
Protected res.i
res = #False
If OpenWindow(#Window_0, 0, 0, 1280/2, 720/2, "Kamera", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar)
ImageGadget(#Image_0, 0, 0, 1280/2, 720/2, 0)
ImageGadget(#Image_1, 1280/2, 0, 1280/2, 720/2, 0)
res = #True
EndIf
ProcedureReturn res
EndProcedure
Procedure capture(deviceno.i)
Protected width.l, height.l, image.i, *pImage.i
Protected count.l, *namebuffer.i, bufferlength.l, name$
Protected tgaheader.TGA_HEADER, scp.SimpleCapParams
Protected t1.q, t2.q, time.q
Protected *fps.fps_struc
*fps.fps_struc = AllocateMemory(SizeOf(fps_struc))
If *fps > 0
width = 1280/2
height = 720/2
*fps\fps_soll = 30
*fps\fps_delay = 1000 / *fps\fps_soll
image = CreateImage(#PB_Any, width, height, 24)
SetGadgetState(deviceno, ImageID(image))
initCOM()
count = countCaptureDevices()
Debug "count: " + Str(count)
If count > 0
bufferlength = 1000
*namebuffer = AllocateMemory(bufferlength)
If *namebuffer > 0
getCaptureDeviceName(deviceno, *namebuffer, bufferlength)
name$ = PeekS(*namebuffer, -1, #PB_Ascii)
If name$ <> ""
Debug "name: " + name$
If deviceno > 0
name$ = GetWindowTitle(#Window_0) + " | " + name$
EndIf
SetWindowTitle(#Window_0, name$)
EndIf
EndIf
tgaHeader\imageid = 0
tgaHeader\colourmaptype = 0
tgaheader\imagetype = 2
tgaHeader\colourmapstart = 0
tgaHeader\colourmaplength = 0
tgaheader\width = width
tgaheader\height = height
tgaHeader\xstart = 0
tgaHeader\ystart = 0
tgaheader\pixeldepth = 32
tgaheader\descriptor = % 11110100
*pImage = AllocateMemory(width * height * 4 + SizeOf(TGA_HEADER))
If *pImage > 0
CopyMemory(@tgaheader, *pImage, SizeOf(TGA_HEADER))
scp\mWidth = width
scp\mHeight = height
scp\mTargetBuf = *pImage + SizeOf(TGA_HEADER)
Debug "memory: " + Str(scp\mWidth * scp\mHeight * 4)
If initCapture(deviceno, @scp)
Debug "initCapture"
Repeat
t1 = timeGetTime_()
If *fps\fps_timer < t1
*fps\fps_res = *fps\fps_counter
*fps\fps_timer = t1 + 1000
*fps\fps_counter = 0
Else
*fps\fps_counter + 1
EndIf
doCapture(deviceno)
;While isCaptureDone(deviceno) = 0
; If quit = 1
; Break
; EndIf
; Delay(1)
;Wend
If quit = 1
Break
EndIf
If CatchImage(deviceno, *pImage)
StartDrawing(ImageOutput(image))
DrawImage(ImageID(deviceno), 0, 0)
DrawText(10, 10, "FPS: " + Str(*fps\fps_res), RGB(255, 0, 0))
StopDrawing()
SetGadgetState(deviceno, ImageID(image))
EndIf
t2 = timeGetTime_()
time = t2 - t1
If time < *fps\fps_delay
Delay(*fps\fps_delay - time)
Else
Delay(1)
EndIf
Until quit = 1
deinitCapture(deviceno)
Debug "deinitCapture"
EndIf
EndIf
EndIf
EndIf
If *fps > 0
FreeMemory(*fps)
EndIf
If *namebuffer > 0
FreeMemory(*namebuffer)
EndIf
If *pImage > 0
FreeMemory(*pImage)
EndIf
EndProcedure
If OpenWindow_Window_0()
StickyWindow(#Window_0, 1)
capture01TH = CreateThread(@capture(), 0)
; capture02TH = CreateThread(@capture(), 1)
;- Event loop
Repeat
Event = WaitWindowEvent(100)
EventGadget = EventGadget()
EventType = EventType()
EventWindow = EventWindow()
Select Event
Case #PB_Event_Gadget
Select EventGadget
Case #Image_0
Case #Image_1
EndSelect
Case #PB_Event_CloseWindow
quit = 1
EndSelect
q1 = IsThread(capture01TH)
q2 = IsThread(capture02TH)
Until quit = 1 And q1 = 0 And q2 = 0
EndIf
;- escapiClose
escapiClose()
End
mfg deify
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
Re: avifil32.dll
geht
(wenn ich da auch etwas breiter aussehe als ich sowieso schon bin
)
mit eine meiner Kamera entsprechenden skalierung 640x480 sieht das (und ich dann) schon
besser aus.
im englishen gibts n code vom freak von 2007 auch mit excapi und der geht auch
http://www.purebasic.fr/english/viewtop ... 37#p177837


mit eine meiner Kamera entsprechenden skalierung 640x480 sieht das (und ich dann) schon
besser aus.
im englishen gibts n code vom freak von 2007 auch mit excapi und der geht auch
http://www.purebasic.fr/english/viewtop ... 37#p177837
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
- deify
- Beiträge: 141
- Registriert: 29.03.2010 22:01
- Computerausstattung: Win7 64bit
AMD Phenom II X4 940
NVIDIA GeForce GTS 250
4GB RAM - Kontaktdaten:
Re: avifil32.dll
Seltsam. Das Breiter liegt daran. dass meine Cams mit 1280*720 aufnehmen, was z.b. von avicap leider auch nicht unterstützt wird.
Was mich wirklich verwundert ist, dass es bei dir nicht klappt das Programm zu starten, da es die selbe source ist! Aber Kommentier doch bitte mal das zweite CreateThread(@capture(),1) in der windowhandler()-Funktion aus, dann sollte es klappen, der Code läuft nämlich momentan für beide Cams.
mfg deify
Was mich wirklich verwundert ist, dass es bei dir nicht klappt das Programm zu starten, da es die selbe source ist! Aber Kommentier doch bitte mal das zweite CreateThread(@capture(),1) in der windowhandler()-Funktion aus, dann sollte es klappen, der Code läuft nämlich momentan für beide Cams.
mfg deify
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
Re: avifil32.dll
das war es wohl ..mit einem thread wuppt das irgendwie (rudimentär)
zmindest sehe ich ein Bild
Der Rest ist wohl noch in recht feuchten Tüchern..
zmindest sehe ich ein Bild
Der Rest ist wohl noch in recht feuchten Tüchern..

pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
- deify
- Beiträge: 141
- Registriert: 29.03.2010 22:01
- Computerausstattung: Win7 64bit
AMD Phenom II X4 940
NVIDIA GeForce GTS 250
4GB RAM - Kontaktdaten:
Re: avifil32.dll
bis jetzt geht das erstellen eines neuen vereins / spielers und somit eben auch das starten einer aufnahme, diese aufnahme wird dann in dem eigenen temp-ordner also cam0.avi / cam1.avi abgespeichert und diese beiden sollen dann beim beenden der Aufnahme auf Nachfrage zu einer Datei verbunden werden z.b. 21.07.2011_11:22.kcf und in dem privaten Ordner des Keglers abgespeichert werden.
Blos leider wird die avi eben noch nicht richtig gespeichert, die komplette playerfunktion ist noch nicht integriert, ich schreib dir hier mal den aktuellen code!
Blos leider wird die avi eben noch nicht richtig gespeichert, die komplette playerfunktion ist noch nicht integriert, ich schreib dir hier mal den aktuellen code!
Code: Alles auswählen
EnableExplicit
IncludeFile "escapi.pbi"
IncludeFile "avifil32.pbi"
UsePNGImageDecoder()
UseTGAImageDecoder()
If escapiOpen() = 0
MessageRequester("Kamera", "DLL 'escapi.dll' nicht vorhanden!")
End
EndIf
Structure TGA_HEADER
imageid.a
colourmaptype.a
imagetype.a
colourmapstart.u
colourmaplength.u
colourmapbits.a
xstart.u
ystart.u
width.u
height.u
pixeldepth.a
descriptor.a
EndStructure
Structure tgax
tga.TGA_HEADER
EndStructure
Structure fps_struc
fps_soll.i
fps_delay.i
fps_counter.i
fps_timer.i
fps_res.i
EndStructure
;{ Enumerations
;Fenster
Enumeration
#Video_Gadget1
#Video_Gadget2
#Window_0
#Window_1
#list
#buttonOK
#buttonNew
#buttonDelete
#menu
#new_buttonImage
#open_buttonImage
#delete_buttonImage
#play_buttonImage
#pause_buttonImage
#stop_buttonImage
#next_buttonImage
#previous_buttonImage
#record_buttonImage
#new_ico
#open_ico
#delete_ico
#play_ico
#pause_ico
#stop_ico
#next_ico
#previous_ico
#record_ico
#video_Image1
#video_Image2
#new_menuitem
#open_menuitem
#delete_menuitem
#close_menuitem
#settings_menuitem
EndEnumeration
Enumeration
#streamtypeAUDIO = $73647561
#streamtypeVIDEO = $73646976
#ICMF_CHOOSE_KEYFRAME=1
#ICMF_CHOOSE_DATARATE=2
#AVIERR_OK=0
#AVIIF_KEYFRAME=$10
#configFile
#tempDir
#newDir
EndEnumeration
;}
Global quit.i = #False, quitThread = -1, restartCapture = -1, recording = #False
Global width.l, height.l, testwidth.l, testheight.l
Global changeSettings = #False
Global currentFile.s, spieler.s, verein.s
Global i
Procedure setupProgramm()
If Not OpenFile(#configFile,GetCurrentDirectory()+"config")
MessageRequester("Fehler","Konnte Einstellungsdatei nicht öffnen")
End
EndIf
If Not ExamineDirectory(#tempDir,GetCurrentDirectory()+"temp","*.*")
If Not CreateDirectory(GetCurrentDirectory()+"temp")
MessageRequester("Fehler","Das temporäre Verzeichnis konnte nicht erstellt werden!")
End
EndIf
Else
FinishDirectory(#tempDir)
EndIf
If Not ExamineDirectory(#tempDir,GetCurrentDirectory()+"Vereine","*.*")
If Not CreateDirectory(GetCurrentDirectory()+"Vereine")
MessageRequester("Fehler","Das Vereins-Verzeichnis konnte nicht erstellt werden!")
End
EndIf
Else
FinishDirectory(#tempDir)
EndIf
EndProcedure
Procedure capture(deviceno.i)
Protected image.i, *pImage.i
Protected count.l, *namebuffer.i, bufferlength.l, name$
Protected tgaheader.TGA_HEADER, scp.SimpleCapParams
Protected t1.q, t2.q, time.q
Protected frame = 0
Protected aviStreamInfo.AVISTREAMINFO, opts.AVICOMPRESSOPTIONS
Protected error.b, tga.TGA_HEADER
Protected ppfile.l, ppavi.l, pAVICompressed.l, psi.AVISTREAMINFO
Protected drawnText.s = "Bitte legen Sie eine neue Aufnahmedatei an, oder öffnen Sie eine vorhandene."
Protected *fps.fps_struc
*fps.fps_struc = AllocateMemory(SizeOf(fps_struc))
If *fps > 0
*fps\fps_soll = 30
*fps\fps_delay = 1000 / *fps\fps_soll
image = CreateImage(#PB_Any, width, height, 24)
SetGadgetState(deviceno, ImageID(image))
initCOM()
count = countCaptureDevices()
If count > 0
tgaHeader\imageid = 0
tgaHeader\colourmaptype = 0
tgaheader\imagetype = 2
tgaHeader\colourmapstart = 0
tgaHeader\colourmaplength = 0
tgaheader\width = width
tgaheader\height = height
tgaHeader\xstart = 0
tgaHeader\ystart = 0
tgaheader\pixeldepth = 32
tgaheader\descriptor = % 11110100
*pImage = AllocateMemory(width * height * 4 + SizeOf(TGA_HEADER))
If *pImage > 0
CopyMemory(@tgaheader, *pImage, SizeOf(TGA_HEADER))
scp\mWidth = width
scp\mHeight = height
scp\mTargetBuf = *pImage + SizeOf(TGA_HEADER)
If initCapture(deviceno, @scp)
AVIFileInit()
If AVIFileOpen(@ppfile,GetCurrentDirectory()+"temp\cam"+Str(deviceno)+".avi",#OF_CREATE,#Null)
End
Else
aviStreamInfo\fccType = #streamtypeVIDEO
aviStreamInfo\fccHandler\a = $6D
aviStreamInfo\fccHandler\b = $73
aviStreamInfo\fccHandler\c = $76
aviStreamInfo\fccHandler\d = $63
aviStreamInfo\dwScale = 1
aviStreamInfo\dwRate = 4
aviStreamInfo\dwSuggestedBufferSize = MemorySize(*pImage)
If SetRect_(@aviStreamInfo\rcFrame, 0, 0, tgaheader\width, tgaheader\height) <>0
If AVIFileCreateStream(ppfile,@ppavi,@aviStreamInfo)
AVIFileRelease(ppfile)
End
Else
opts.AVICOMPRESSOPTIONS
Dim aopts(0)
aopts(0)=@opts
If AVISaveOptions(0, #ICMF_CHOOSE_KEYFRAME | #ICMF_CHOOSE_DATARATE, 1, @ppavi, @aopts(0)) <> 1
MessageRequester("Fehler", "Fehler beim Ändern der AVI-Einstellungen aufgetreten")
EndIf
If Not AVIMakeCompressedStream(@pAVICompressed, ppavi, aopts(0), 0)=#AVIERR_OK
MessageRequester("Fehler","Ein Fehler ist beim Komprimieren der AVI aufgetreten!")
End
EndIf
error = AVIStreamSetFormat(pAVICompressed, 0, @tga, SizeOf(TGA_HEADER))
If error
MessageRequester("Fehler","Fehler "+Str(error)+" ist beim Konfigurieren des AVI-Formats aufgetreten!")
End
EndIf
EndIf
Else
End
EndIf
EndIf
Repeat
If spieler And verein And quit = #False
If restartCapture <> deviceno
t1 = timeGetTime_()
If *fps\fps_timer < t1
*fps\fps_res = *fps\fps_counter
*fps\fps_timer = t1 + 1000
*fps\fps_counter = 0
Else
*fps\fps_counter + 1
EndIf
doCapture(deviceno)
;
; While isCaptureDone(deviceno) = 0
; If quit = 1
; Break
; EndIf
; Delay(1)
; Wend
If CatchImage(deviceno, *pImage)
If recording = #False
If frame <> 0
frame = 0
AVIStreamRelease(pAVICompressed)
AVIStreamRelease(ppavi)
AVIFileRelease(ppfile)
EndIf
StartDrawing(ImageOutput(image))
DrawImage(ImageID(deviceno), 0, 0)
DrawText(10, 10, "FPS: " + Str(*fps\fps_res), RGB(255, 0, 0))
StopDrawing()
SetGadgetState(deviceno, ImageID(image))
Else
If AVIStreamWrite(pAVICompressed,frame,1,*pImage,MemorySize(*pImage),#AVIIF_KEYFRAME,#Null,#Null)
frame+1
EndIf
EndIf
EndIf
t2 = timeGetTime_()
time = t2 - t1
If time < *fps\fps_delay
Delay(*fps\fps_delay - time)
Else
Delay(1)
EndIf
Else
deinitCapture(deviceno)
Repeat
Delay(100)
Until initCapture(deviceno, @scp)
restartCapture = -1
EndIf
Else
StartDrawing(ImageOutput(image))
Box(0,0,width,height,#Black)
DrawText(width/2-TextWidth(drawnText)/2,height/2-TextHeight(drawnText)/2,drawnText)
StopDrawing()
SetGadgetState(#Video_Gadget1,ImageID(image))
SetGadgetState(#Video_Gadget2,ImageID(image))
Delay(1000)
EndIf
Until quit = #True Or quitThread = deviceno
deinitCapture(deviceno)
Else
MessageRequester("Fehler","Es ist ein Fehler beim Starten der Webcams aufgetreten!")
End
EndIf
EndIf
EndIf
EndIf
If *fps > 0
FreeMemory(*fps)
EndIf
If *namebuffer > 0
FreeMemory(*namebuffer)
EndIf
If *pImage > 0
FreeMemory(*pImage)
EndIf
EndProcedure
Procedure getVideoFormat()
ExamineDesktops()
testwidth = DesktopWidth(0)-150
testheight = DesktopHeight(0)-225
Repeat
width + 16
height + 9
Until width >= testwidth Or height >= testheight /2
width-16
height-9
EndProcedure
Procedure LoadImages()
CatchImage(#new_ico,?new)
ResizeImage(#new_ico,75,75)
CatchImage(#open_ico,?open)
ResizeImage(#open_ico,75,75)
CatchImage(#delete_ico,?del)
ResizeImage(#delete_ico,75,75)
CatchImage(#play_ico,?play)
CatchImage(#pause_ico,?pause)
CatchImage(#stop_ico,?stop)
CatchImage(#next_ico,?nex)
CatchImage(#previous_ico,?previous)
CatchImage(#record_ico,?record)
ResizeImage(#record_ico,25,25)
EndProcedure
Procedure OpenWindow_0()
If OpenWindow(#Window_0,0,0,width+200,height*2+150,"Kegelcam",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
ButtonImageGadget(#new_buttonImage,25,DesktopHeight(0)/2-150-175/2,75,75,ImageID(#new_ico))
GadgetToolTip(#new_buttonImage,"Neue Aufnahmedatei erstellen")
ButtonImageGadget(#open_buttonImage,25,DesktopHeight(0)/2-50-175/2,75,75,ImageID(#open_ico))
GadgetToolTip(#open_buttonImage,"Bestehende Aufnahmedatei öffnen")
ButtonImageGadget(#delete_buttonImage,25,DesktopHeight(0)/2+50-175/2,75,75,ImageID(#delete_ico))
GadgetToolTip(#delete_buttonImage,"Momentane Aufnahmedatei löschen")
ButtonImageGadget(#previous_buttonImage,width/2-150+125,height*2+200-137.5,50,50,ImageID(#previous_ico))
ButtonImageGadget(#play_buttonImage,width/2-90+125,height*2+200-137.5,50,50,ImageID(#play_ico))
ButtonImageGadget(#stop_buttonImage,width/2-30+125,height*2+200-137.5,50,50,ImageID(#stop_ico))
ButtonImageGadget(#record_buttonImage,width/2+30+125,height*2+200-137.5,50,50,ImageID(#record_ico),#PB_Button_Toggle)
ButtonImageGadget(#next_buttonImage,width/2+90+125,height*2+200-137.5,50,50,ImageID(#next_ico))
ImageGadget(#Video_Gadget1,DesktopWidth(0)-(DesktopWidth(0)-125),DesktopHeight(0)-(DesktopHeight(0)-25),width,height, 0)
GadgetToolTip(#Video_Gadget1,"Doppelklick zum Aktualisieren")
ImageGadget(#Video_Gadget2,DesktopWidth(0)-(DesktopWidth(0)-125),DesktopHeight(0)-(DesktopHeight(0)-25)+25+height,width,height, 0)
GadgetToolTip(#Video_Gadget2,"Doppelklick zum Aktualisieren")
If CreateMenu(#menu,WindowID(#Window_0))
MenuTitle("Datei")
MenuItem(#new_menuitem, "Neu")
MenuItem(#open_menuitem, "Öffnen")
MenuItem(#delete_menuitem, "Löschen")
MenuBar()
MenuItem(#close_menuitem, "Beenden")
MenuTitle("Einstellungen")
MenuItem(#settings_menuitem,"AVI Kompressionseinstellungen")
Else
MessageRequester("Error","Fenster konnte nicht geladen werden!")
End
EndIf
Else
MessageRequester("Error","Fenster konnte nicht geladen werden!")
End
EndIf
EndProcedure
Procedure OpenWindow_1(usage.s)
If OpenWindow(#Window_1,0,0,300,400,"Bitte "+usage+" wählen",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget)
ListViewGadget(#list,10,10,280,325)
If usage = "Verein"
If ExamineDirectory(#newDir,GetCurrentDirectory()+"Vereine\","*.*")
While NextDirectoryEntry(#newDir)
If DirectoryEntryType(#newDir) = #PB_DirectoryEntry_Directory And DirectoryEntryName(#newDir) <> "." And DirectoryEntryName(#newDir) <> ".."
AddGadgetItem(#list,-1,DirectoryEntryName(#newDir))
EndIf
Wend
EndIf
Else
If ExamineDirectory(#newDir,GetCurrentDirectory()+"Vereine\"+verein+"\","*.*")
While NextDirectoryEntry(#newDir)
If DirectoryEntryType(#newDir) = #PB_DirectoryEntry_Directory And DirectoryEntryName(#newDir) <> "." And DirectoryEntryName(#newDir) <> ".."
AddGadgetItem(#list,-1,DirectoryEntryName(#newDir))
EndIf
Wend
EndIf
EndIf
ButtonGadget(#buttonOK,10,345,80,45,"OK")
ButtonGadget(#buttonNew,110,345,80,45,"Neu")
ButtonGadget(#buttonDelete,210,345,80,45,"Löschen")
EndIf
EndProcedure
Procedure windowHandler()
Protected capture01TH,capture02TH, q1, q2
Protected eventGadget, eventType, eventMenu
Protected window1Usage.s
Protected tempString.s
capture01TH = CreateThread(@capture(), 0)
capture02TH = CreateThread(@capture(), 1)
Repeat
If quit = #False
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
;--Window0
Case #new_buttonImage
If spieler And verein
If MessageRequester("","Mit dem erstellen einer neuen Aufnahmedatei wird die momentane Aufnahme von "+spieler+"("+Verein+") verworfen."+#CRLF$+"Wollen Sie fortfahren?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
window1Usage = "Verein"
OpenWindow_1(window1Usage)
StickyWindow(#Window_1,1)
EndIf
Else
window1Usage = "Verein"
OpenWindow_1(window1Usage)
StickyWindow(#Window_1,1)
EndIf
Case #open_buttonImage
If spieler And verein
currentFile = OpenFileRequester(spieler+" ("+verein+")",GetCurrentDirectory()+"Vereine\"+verein+"\"+spieler+"\","Kegelcam Aufnahmedatei (*.kcf)|*.kcf",0)
Else
MessageRequester("Fehler","Es muss erst ein Spieler initialisiert werden um eine Aufnahmedatei zu öffnen!")
window1Usage = "Verein"
OpenWindow_1(window1Usage)
StickyWindow(#Window_1,1)
EndIf
Case #delete_buttonImage
If currentFile
If MessageRequester("Löschen","Sind sie sich sicher, dass sie die momentane Aufnahmedatei löschen wollen?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
DeleteFile(currentFile)
currentFile = ""
EndIf
EndIf
Case #Video_Gadget1
Select EventType()
Case #PB_EventType_LeftDoubleClick
restartCapture = 0
EndSelect
Case #Video_Gadget2
Select EventType()
Case #PB_EventType_LeftDoubleClick
restartCapture = 1
EndSelect
Case #record_buttonImage
Select EventType()
Case #PB_EventType_LeftClick
If spieler And verein
If recording = #False
recording = #True
Else
recording = #False
If MessageRequester("","Möchten sie die Aufnahme endgültig abspeichern?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
EndIf
EndIf
Else
SetGadgetState(#record_buttonImage,0)
EndIf
EndSelect
;--Window1
Case #buttonOK
If window1Usage = "Verein"
verein = GetGadgetText(#list)
CloseWindow(#window_1)
If verein
window1Usage = "Spieler"
OpenWindow_1(window1Usage)
EndIf
Else
spieler = GetGadgetText(#list)
CloseWindow(#Window_1)
If spieler And verein
SetWindowTitle(#Window_0,"Kegelcam - "+spieler+" ("+verein+")")
EndIf
EndIf
Case #buttonNew
tempString = InputRequester("Neu","Geben Sie den Namen des neuen "+window1Usage+"s ein","")
If tempString
AddGadgetItem(#list,-1,tempString)
If window1Usage = "Verein"
If Not ExamineDirectory(#newDir,GetCurrentDirectory()+"Vereine\"+tempString,"*.*")
If Not CreateDirectory(GetCurrentDirectory()+"Vereine\"+tempString)
MessageRequester("Fehler","Fehler beim erstellen des Vereins")
EndIf
Else
FinishDirectory(#newDir)
EndIf
Else
If Not ExamineDirectory(#newDir,GetCurrentDirectory()+"Vereine\"+verein+"\"+tempString,"*.*")
If Not CreateDirectory(GetCurrentDirectory()+"Vereine\"+verein+"\"+tempString)
MessageRequester("Fehler","Fehler beim erstellen des Spielers")
EndIf
Else
FinishDirectory(#newDir)
EndIf
EndIf
EndIf
Case #buttonDelete
If GetGadgetState(#list) > -1
If MessageRequester("Löschen","Sind Sie sich sicher, dass sie den "+window1Usage+" "+GetGadgetText(#list)+" aus der Liste entfernen wollen?"+#CRLF$+"Durch das Löschen gehen alle gespeicherten Aufnahmedateien ebenfalls verloren!",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
RemoveGadgetItem(#list,GetGadgetState(#list))
If window1Usage = "Verein"
DeleteDirectory(GetCurrentDirectory()+"Vereine\"+verein,"")
Else
DeleteDirectory(GetCurrentDirectory()+"Vereine\"+verein+"\"+spieler,"")
EndIf
EndIf
EndIf
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #settings_menuitem
MessageRequester("Fehler","Funktion noch nicht implementiert!")
EndSelect
Case #PB_Event_CloseWindow
If EventWindow() = #Window_0
If recording
If MessageRequester("","Es wird zur Zeit ein Video aufgenommen."+#CRLF$+"Wollen sie wirklich beenden?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
CloseWindow(#Window_0)
If IsWindow(#Window_1)
CloseWindow(#Window_1)
EndIf
quit = #True
EndIf
Else
CloseWindow(#Window_0)
If IsWindow(#Window_1)
CloseWindow(#Window_1)
EndIf
quit = #True
EndIf
Else
CloseWindow(#Window_1)
EndIf
EndSelect
EndIf
q1 = IsThread(capture01TH)
q2 = IsThread(capture02TH)
Until quit = 1 And q1 = 0 And q2 = 0
EndProcedure
Procedure main()
setupProgramm()
getVideoFormat()
LoadImages()
OpenWindow_0()
windowHandler()
AVIFileExit()
escapiClose()
EndProcedure
main()
;{ datasection
End
DataSection
new: IncludeBinary "Neu.png"
open: IncludeBinary "Öffnen.png"
del: IncludeBinary "Löschen.png"
play: IncludeBinary "play.png"
pause: IncludeBinary "pause.png"
stop: IncludeBinary "stop.png"
nex: IncludeBinary "next.png"
previous: IncludeBinary "previous.png"
record: IncludeBinary "record.png"
EndDataSection
;}
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
Re: avifil32.dll
ich sehe nn eine avi im Projekt temp-ordner
diese ist zwar groß aber irgendwie nicht korrekt
sieht so aus als wenn der Codec (Dein Code hat danach gefragt und ich habe "Vollbilder umkomprimiert" ausgewählt)
nicht so recht tut oder was in der Art.
diese ist zwar groß aber irgendwie nicht korrekt
sieht so aus als wenn der Codec (Dein Code hat danach gefragt und ich habe "Vollbilder umkomprimiert" ausgewählt)
nicht so recht tut oder was in der Art.
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
- deify
- Beiträge: 141
- Registriert: 29.03.2010 22:01
- Computerausstattung: Win7 64bit
AMD Phenom II X4 940
NVIDIA GeForce GTS 250
4GB RAM - Kontaktdaten:
Re: avifil32.dll
das ist eben mein problem, die datei nimmt schnell an Größe zu, ist aber nicht korrekt. Versucht man einen anderen Codec auszuwählen schlägt die Funktion aber fehl, daher wollte ich wissen was ich falsch mache bzw wie ich es anders machen kann 
Ich hatte ja schon überlegt auf mpeg umzusteigen, ich wollte aber eigentlich kein externes Programm verwenden sondern eben eine dll...
Was hältst du davon, was scheint dir sinnvoller/einfacher zu sein?

Ich hatte ja schon überlegt auf mpeg umzusteigen, ich wollte aber eigentlich kein externes Programm verwenden sondern eben eine dll...
Was hältst du davon, was scheint dir sinnvoller/einfacher zu sein?
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)