avifil32.dll
- 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:
avifil32.dll
Also mein erstes Problem hat sich erledigt! Daher ändere ich den Post mal (:
Meine Frage ist, wie kann ich aus mehreren einzelbildern mit der avifil32.dll eine avi machen?
Muss ich dazu einen neuen Stream erzeugen und dann jedes Bild mit AVIStreamWrite auf den stream speichern?
Wäre nett wenn ihr mir genauere Infos dazu geben kkönntet! Mir sind z.b. Auch die PArameter von AviStreamWrite etwas suspect http://msdn.microsoft.com/en-us/library ... 85%29.aspx
z.b. LONG lStart,
LONG lSamples
mfg deify
Meine Frage ist, wie kann ich aus mehreren einzelbildern mit der avifil32.dll eine avi machen?
Muss ich dazu einen neuen Stream erzeugen und dann jedes Bild mit AVIStreamWrite auf den stream speichern?
Wäre nett wenn ihr mir genauere Infos dazu geben kkönntet! Mir sind z.b. Auch die PArameter von AviStreamWrite etwas suspect http://msdn.microsoft.com/en-us/library ... 85%29.aspx
z.b. LONG lStart,
LONG lSamples
mfg deify
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
Re: avifil32.dll
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
habe ich schon gesehen, blos irgendwie war ich zu dumm was passendes rauszufiltern! Ich habs jetzt mal anhand des msdn-Beispiels probiert, allerdings bin ich mir nicht sicher ob es überhaupt der richtige ansatz ist!
EDIT: Also ich hab den Code jetzt mal in mein Webcam-Projekt eingefügt, es wird sogar eine .avi aufgenommen, allerdings wächst diese VIEL zu schnell, (nach 20 sec aufnehmen sind etwa 3 stunden material vorhanden! UND noch viel schlimmer
es zeigt nichts an.... lediglich die Dateigröße nimmt zu, anscheinend aber kein Bild....
Wie kann ich das synchronisieren? Wieso zeigt es kein Bild an?
Anbei der komplette Code (zum Testen sollte eine (/zwei) Webcam(s) vorhanden sein, die zweite ist auskommentiert!)
EDIT: Also ich hab den Code jetzt mal in mein Webcam-Projekt eingefügt, es wird sogar eine .avi aufgenommen, allerdings wächst diese VIEL zu schnell, (nach 20 sec aufnehmen sind etwa 3 stunden material vorhanden! UND noch viel schlimmer

Wie kann ich das synchronisieren? Wieso zeigt es kein Bild an?
Anbei der komplette Code (zum Testen sollte eine (/zwei) Webcam(s) vorhanden sein, die zweite ist auskommentiert!)
Code: Alles auswählen
EnableExplicit
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 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
#menu
#new_buttonImage
#open_buttonImage
#delete_buttonImage
#play_buttonImage
#pause_buttonImage
#stop_buttonImage
#next_buttonImage
#previous_buttonImage
#record_buttonImage
EndEnumeration
;Icons & Videoimages
Enumeration
#new_ico
#open_ico
#delete_ico
#play_ico
#pause_ico
#stop_ico
#next_ico
#previous_ico
#record_ico
#video_Image1
#video_Image2
EndEnumeration
Enumeration
#new_menuitem
#open_menuitem
#delete_menuitem
#close_menuitem
EndEnumeration
;}
Global quit.i = #False, quitThread = -1, recording = #False
Global width.l, height.l, testwidth.l, testheight.l
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 *fps.fps_struc
*fps.fps_struc = AllocateMemory(SizeOf(fps_struc))
If *fps > 0
*fps\fps_soll = 100
*fps\fps_delay = 1000 / *fps\fps_soll
image = CreateImage(#PB_Any, width, height, 24)
SetGadgetState(deviceno, ImageID(image))
initCOM()
AVIFileInit()
If AVIFileOpen(@ppfile,"C:\cam"+Str(deviceno)+".avi",#OF_CREATE,#Null)
End
Else
If AVIFileCreateStream(ppfile,@ppavi,@psi)
AVIFileRelease(ppfile)
End
Else
If AVIStreamSetFormat(ppavi,0,tgaheader, SizeOf(TGA_HEADER))
AVIStreamRelease(ppavi)
AVIFileRelease(ppfile)
End
EndIf
EndIf
EndIf
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)
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)
If recording = #False
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
AVIStreamWrite(ppavi,frame,1,*pImage,MemorySize(*pImage),#PB_Any,#Null,#Null)
frame+1
EndIf
EndIf
t2 = timeGetTime_()
time = t2 - t1
If time < *fps\fps_delay
Delay(*fps\fps_delay - time)
Else
Delay(1)
EndIf
Until quit = 1 Or quitThread = deviceno
deinitCapture(deviceno)
AVIFileExit()
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,"Testfenster",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
ButtonImageGadget(#new_buttonImage,25,DesktopHeight(0)/2-150-175/2,75,75,ImageID(#new_ico))
ButtonImageGadget(#open_buttonImage,25,DesktopHeight(0)/2-50-175/2,75,75,ImageID(#open_ico))
ButtonImageGadget(#delete_buttonImage,25,DesktopHeight(0)/2+50-175/2,75,75,ImageID(#delete_ico))
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)
ImageGadget(#Video_Gadget2,DesktopWidth(0)-(DesktopWidth(0)-125),DesktopHeight(0)-(DesktopHeight(0)-25)+25+height,width,height, 0)
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")
Else
MessageRequester("Error","Fenster konnte nicht geladen werden!")
End
EndIf
Else
MessageRequester("Error","Fenster konnte nicht geladen werden!")
End
EndIf
EndProcedure
Procedure windowHandler()
Protected capture01TH,capture02TH, q1, q2
StickyWindow(#Window_0, 1)
capture01TH = CreateThread(@capture(), 0)
; capture02TH = CreateThread(@capture(), 1)
Repeat
Select WaitWindowEvent(1)
Case #PB_Event_CloseWindow
quit = #True
Case #PB_Event_Gadget
Select EventGadget()
Case #Video_Gadget1
Select EventType()
Case #PB_EventType_LeftDoubleClick
quitThread = 0
Repeat
Delay(100)
Until Not IsThread(capture01TH)
quitThread = -1
Repeat
capture01TH = CreateThread(@capture(),0)
Until IsThread(capture01TH)
EndSelect
Case #Video_Gadget2
Select EventType()
Case #PB_EventType_LeftDoubleClick
quitThread = 1
Repeat
Delay(100)
Until Not IsThread(capture02TH)
quitThread = -1
Repeat
capture02TH = CreateThread(@capture(),1)
Until IsThread(capture02TH)
EndSelect
Case #record_buttonImage
Select EventType()
Case #PB_EventType_LeftClick
If recording = #False
recording = #True
Else
recording = #False
AVIStreamRelease(ppavi)
AVIFileRelease(ppfile)
EndIf
EndSelect
EndSelect
EndSelect
q1 = IsThread(capture01TH)
q1 = IsThread(capture02TH)
Until quit = 1 And q1 = 0 And q2 = 0
EndProcedure
Procedure main()
getVideoFormat()
LoadImages()
OpenWindow_0()
windowHandler()
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
Bist Du sicher das du mit dem Code EinzelBilder zu einem Video zusammenbaust?
Für mich sieht das eher genau andersrum aus. einzelbilder aus einem video darstellen.
(ich komme aber nur bis
bzw bis zum End danach
im allgemeinen bin ich ja bei sowas ein freund von ffmpeg (und/oder dem videolan project)
mit ffmpeg kanst du imho aus EInzelbildern ein Video zusammenstöpseln
z.B.
ffmpeg -f image2 -i img%d.jpg c:\new.avi /für bis zu 9 Bilder
ffmpeg -f image2 -i img%02d.jpg c:\new.avi // für bis zu 99 Bilder
ffmpeg -f image2 -i img%03d.jpg c:\new.avi // für bis zu 999 Bilder
die Bilder müssen dann img1.jpg - img9.jpg bzw img01.jpg bis img99.jpg
bzw img001.img bis img999.jpg heissen
Für mich sieht das eher genau andersrum aus. einzelbilder aus einem video darstellen.
(ich komme aber nur bis
Code: Alles auswählen
If Not AVIFileCreateStream(ppfile,@ppavi,@psi)
im allgemeinen bin ich ja bei sowas ein freund von ffmpeg (und/oder dem videolan project)
mit ffmpeg kanst du imho aus EInzelbildern ein Video zusammenstöpseln
z.B.
ffmpeg -f image2 -i img%d.jpg c:\new.avi /für bis zu 9 Bilder
ffmpeg -f image2 -i img%02d.jpg c:\new.avi // für bis zu 99 Bilder
ffmpeg -f image2 -i img%03d.jpg c:\new.avi // für bis zu 999 Bilder
die Bilder müssen dann img1.jpg - img9.jpg bzw img01.jpg bis img99.jpg
bzw img001.img bis img999.jpg heissen
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.
Re: avifil32.dll
andersrum gehts so
ffmpeg -i c:\new.avi -f image2 -s 320x240 k:\bilder%4d.jpg
ffmpeg -i c:\new.avi -f image2 -s 320x240 k:\bilder%4d.jpg
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
ja sry, der code war falsch
habe das not inzwischen rausgestrichen!
Also eigentlich soll der Code ein Video einer Webcam (das ja in Einzelbildern im RAM landet und dann mit einem TGA-Header auf meine Imagegadget geklatscht wird) als AVI abspeichern.
So, jetzt habe ich das eben mit diesem code versucht! Ich geb dir nochmal die aktuelle version, allerdings brauchst du auch noch die escapi.dll wenn du eine webcam angeschlossen hast! aufnahme startet man natürlich mit dem aufnahme button
und beendet diese auch wieder so

Also eigentlich soll der Code ein Video einer Webcam (das ja in Einzelbildern im RAM landet und dann mit einem TGA-Header auf meine Imagegadget geklatscht wird) als AVI abspeichern.
So, jetzt habe ich das eben mit diesem code versucht! Ich geb dir nochmal die aktuelle version, allerdings brauchst du auch noch die escapi.dll wenn du eine webcam angeschlossen hast! aufnahme startet man natürlich mit dem aufnahme button

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 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
#menu
#new_buttonImage
#open_buttonImage
#delete_buttonImage
#play_buttonImage
#pause_buttonImage
#stop_buttonImage
#next_buttonImage
#previous_buttonImage
#record_buttonImage
EndEnumeration
;Icons & Videoimages
Enumeration
#new_ico
#open_ico
#delete_ico
#play_ico
#pause_ico
#stop_ico
#next_ico
#previous_ico
#record_ico
#video_Image1
#video_Image2
EndEnumeration
Enumeration
#new_menuitem
#open_menuitem
#delete_menuitem
#close_menuitem
EndEnumeration
;}
Global quit.i = #False, quitThread = -1, recording = #False
Global width.l, height.l, testwidth.l, testheight.l
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 *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,"C:\cam"+Str(deviceno)+".avi",#OF_CREATE,#Null)
End
Else
If AVIFileCreateStream(ppfile,@ppavi,@psi)
AVIFileRelease(ppfile)
End
Else
If AVIStreamSetFormat(ppavi,0,tgaheader, SizeOf(TGA_HEADER))
AVIStreamRelease(ppavi)
AVIFileRelease(ppfile)
End
EndIf
EndIf
EndIf
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)
If recording = #False
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
AVIStreamWrite(ppavi,AVIStreamLength(ppavi),1,*pImage,MemorySize(*pImage),#PB_Any,#Null,#Null)
frame+1
EndIf
EndIf
t2 = timeGetTime_()
time = t2 - t1
If time < *fps\fps_delay
Delay(*fps\fps_delay - time)
Else
Delay(1)
EndIf
Until quit = 1 Or quitThread = deviceno
deinitCapture(deviceno)
AVIFileExit()
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,"Testfenster",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
ButtonImageGadget(#new_buttonImage,25,DesktopHeight(0)/2-150-175/2,75,75,ImageID(#new_ico))
ButtonImageGadget(#open_buttonImage,25,DesktopHeight(0)/2-50-175/2,75,75,ImageID(#open_ico))
ButtonImageGadget(#delete_buttonImage,25,DesktopHeight(0)/2+50-175/2,75,75,ImageID(#delete_ico))
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)
ImageGadget(#Video_Gadget2,DesktopWidth(0)-(DesktopWidth(0)-125),DesktopHeight(0)-(DesktopHeight(0)-25)+25+height,width,height, 0)
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")
Else
MessageRequester("Error","Fenster konnte nicht geladen werden!")
End
EndIf
Else
MessageRequester("Error","Fenster konnte nicht geladen werden!")
End
EndIf
EndProcedure
Procedure windowHandler()
Protected capture01TH,capture02TH, q1, q2
StickyWindow(#Window_0, 1)
capture01TH = CreateThread(@capture(), 0)
; capture02TH = CreateThread(@capture(), 1)
Repeat
Select WaitWindowEvent(1)
Case #PB_Event_CloseWindow
quit = #True
Case #PB_Event_Gadget
Select EventGadget()
Case #Video_Gadget1
Select EventType()
Case #PB_EventType_LeftDoubleClick
quitThread = 0
Repeat
Delay(100)
Until Not IsThread(capture01TH)
quitThread = -1
Repeat
capture01TH = CreateThread(@capture(),0)
Until IsThread(capture01TH)
EndSelect
Case #Video_Gadget2
Select EventType()
Case #PB_EventType_LeftDoubleClick
quitThread = 1
Repeat
Delay(100)
Until Not IsThread(capture02TH)
quitThread = -1
Repeat
capture02TH = CreateThread(@capture(),1)
Until IsThread(capture02TH)
EndSelect
Case #record_buttonImage
Select EventType()
Case #PB_EventType_LeftClick
If recording = #False
recording = #True
Else
recording = #False
AVIStreamRelease(ppavi)
AVIFileRelease(ppfile)
EndIf
EndSelect
EndSelect
EndSelect
q1 = IsThread(capture01TH)
q1 = IsThread(capture02TH)
Until quit = 1 And q1 = 0 And q2 = 0
EndProcedure
Procedure main()
getVideoFormat()
LoadImages()
OpenWindow_0()
windowHandler()
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
mach ich dann mal (sobald ich ne webcam an meinem Rechenknecht dran hab) morgen oder so
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
So hier nochmal der überarbeitete code mit tga-header und nach einem Beispiel aus dem französischen Forum.
Jetzt bekomme ich allerdings beim Aufrufen der AviStreamSetFormat-Funktion den errorcode 102 oder 104 ,je nachdem welchen codec ich verwende. Wäre toll wenn ihr mir da weiterhelfen könnt, da ich das format eigentlich gerne komprimieren würde und nicht mit nur einzelbildern!
Leider ist die AVI zwar aufgenommen, kann aber nicht abgespielt werden! Hoffe ihr wisst mehr als ich
Hier noch die Includes!
avifil32.pbi:
escapi.pbi
Jetzt bekomme ich allerdings beim Aufrufen der AviStreamSetFormat-Funktion den errorcode 102 oder 104 ,je nachdem welchen codec ich verwende. Wäre toll wenn ihr mir da weiterhelfen könnt, da ich das format eigentlich gerne komprimieren würde und nicht mit nur einzelbildern!
Leider ist die AVI zwar aufgenommen, kann aber nicht abgespielt werden! Hoffe ihr wisst mehr als ich

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
EndEnumeration
;Icons & Videoimages
Enumeration
#new_ico
#open_ico
#delete_ico
#play_ico
#pause_ico
#stop_ico
#next_ico
#previous_ico
#record_ico
#video_Image1
#video_Image2
EndEnumeration
Enumeration
#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
EndEnumeration
;}
Global quit.i = #False, quitThread = -1, restartCapture = -1, recording = #False
Global width.l, height.l, testwidth.l, testheight.l
Global changeSettings = #False
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 *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,"C:\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 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
Until quit = 1 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,"Testfenster",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget)
ButtonImageGadget(#new_buttonImage,25,DesktopHeight(0)/2-150-175/2,75,75,ImageID(#new_ico))
ButtonImageGadget(#open_buttonImage,25,DesktopHeight(0)/2-50-175/2,75,75,ImageID(#open_ico))
ButtonImageGadget(#delete_buttonImage,25,DesktopHeight(0)/2+50-175/2,75,75,ImageID(#delete_ico))
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)
ImageGadget(#Video_Gadget2,DesktopWidth(0)-(DesktopWidth(0)-125),DesktopHeight(0)-(DesktopHeight(0)-25)+25+height,width,height, 0)
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)
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
capture01TH = CreateThread(@capture(), 0)
capture02TH = CreateThread(@capture(), 1)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
If EventWindow() = #Window_0
quit = #True
Else
CloseWindow(#Window_1)
EndIf
Case #PB_Event_Gadget
Select EventGadget()
;--Window0
Case #new_buttonImage
window1Usage = "Verein"
OpenWindow_1(window1Usage)
StickyWindow(#Window_1,1)
Case #open_buttonImage
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 recording = #False
recording = #True
Else
recording = #False
EndIf
EndSelect
;--Window1
Case #buttonOK
If window1Usage = "Verein"
CloseWindow(#window_1)
window1Usage = "Spieler"
OpenWindow_1(window1Usage)
Else
CloseWindow(#Window_1)
EndIf
Case #buttonNew
AddGadgetItem(#list,-1,InputRequester("Neu","Geben Sie den Namen des neuen "+window1Usage+"s ein",""))
Case #buttonDelete
If GetGadgetState(#list) > -1
If MessageRequester("Löschen","Sind Sie sich sicher, dass sie den "+window1Usage+" "+GetGadgetItemText(#list,GetGadgetState(#list))+" aus der Liste entfernen wollen?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
RemoveGadgetItem(#list,GetGadgetState(#list))
EndIf
EndIf
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #settings_menuitem
MessageRequester("Fehler","Funktion noch nicht implementiert!")
EndSelect
EndSelect
q1 = IsThread(capture01TH)
q2 = IsThread(capture02TH)
Until quit = 1 And q1 = 0 And q2 = 0
EndProcedure
Procedure main()
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
;}
;}
avifil32.pbi:
Code: Alles auswählen
EnableExplicit
UseTGAImageDecoder()
Enumeration
#avifil32_dll
EndEnumeration
Structure msvc
a.b
b.b
c.b
d.b
EndStructure
Structure AVISTREAMINFO
fccType.l
fccHandler.msvc
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.b[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
Global AVIFileInit, AVIFileOpen, AVIFileRelease, AVIFileExit_, AVIFileCreateStream, AVIStreamSetFormat, AVIStreamRelease, AVIStreamWrite, AVIStreamLength, AVISaveOptions,AVIMakeCompressedStream
Prototype Proto_AVIFileInit()
Prototype.l Proto_AVIFileOpen(*ppfile.l, szFile.s, mode.l, *pclsidHandler.l)
Prototype.l Proto_AVIFileCreateStream(pfile.l, *ppavi.l, *psi.AVISTREAMINFO)
Prototype.l Proto_AVIStreamWrite(pavi.l, lStart.l, lSamples.l, lpBuffer.l, cbBuffer.l, dwFlags.l, *plSampWritten.l, *plBytesWritten.l)
Prototype.l Proto_AVIStreamSetFormat(pavi.l,lPos.l, lpFormat.l, cbFormat.l)
Prototype.l Proto_AVIStreamLength(pavi.l)
Prototype.l Proto_AVIStreamRelease(pavi.l)
Prototype.l Proto_AVIFileRelease(pfile.l)
Prototype.l Proto_AVISaveOptions(hwnd.l, uiFlags.l, nStrams.i, *ppavi.l, *plpOptions.l)
Prototype.l Proto_AVIMakeCompressedStream(*ppsCompressed.l, *psSource.l, *lpOptions.l, *pclsidHandler.l)
Prototype Proto_AVIFileExit()
If Not OpenLibrary(#avifil32_dll,"avifil32.dll")
MessageRequester("Error","avifil32.dll wurde nicht gefunden.")
End
Else
AVIFileInit.Proto_AVIFileInit = GetFunction(#avifil32_dll, "AVIFileInit")
AVIFileOpen.Proto_AVIFileOpen = GetFunction(#avifil32_dll, "AVIFileOpen")
AVIFileCreateStream.Proto_AVIFileCreateStream = GetFunction(#avifil32_dll, "AVIFileCreateStream")
AVIStreamWrite.Proto_AVIStreamWrite = GetFunction(#avifil32_dll, "AVIStreamWrite")
AVIStreamSetFormat.Proto_AVIStreamSetFormat = GetFunction(#avifil32_dll,"AVIStreamSetFormat")
AVIStreamLength.Proto_AVIStreamLength = GetFunction(#avifil32_dll,"AVIStreamLength")
AVIStreamRelease.Proto_AVIStreamRelease = GetFunction(#avifil32_dll, "AVIStreamRelease")
AVIFileRelease.Proto_AVIFileRelease = GetFunction(#avifil32_dll, "AVIFileRelease")
AVISaveOptions.Proto_AVISaveOptions = GetFunction(#avifil32_dll,"AVISaveOptions")
AVIMakeCompressedStream.Proto_AVIMakeCompressedStream = GetFunction(#avifil32_dll,"AVIMakeCompressedStream")
AVIFileExit_.Proto_AVIFileExit = GetFunction(#avifil32_dll, "AVIFileExit")
EndIf
Global ppfile.l, ppavi.l, psi.AVISTREAMINFO, pAVICompressed.l
Procedure AVIFileExit()
AVIFileExit_()
CloseLibrary(#avifil32_dll)
EndProcedure
Code: Alles auswählen
; escapi.pbi
;
; http://sol.gfxile.net/escapi/index.html
Structure SimpleCapParams
*mTargetBuf.i ; Must be at least mWidth * mHeight * SizeOf(int) of size!
mWidth.l
mHeight.l
EndStructure
Global escapiDLL.i
;- Prototype
PrototypeC.l ESCAPIDLLVersion()
PrototypeC.l countCaptureDevices()
PrototypeC.l deinitCapture(deviceno.l)
PrototypeC.l doCapture(deviceno.l)
PrototypeC.l getCaptureDeviceName(deviceno.l, *namebuffer.i, bufferlength.l)
PrototypeC.l initCOM()
PrototypeC.l initCapture(deviceno.l, *SimpleCapParams.i)
PrototypeC.l isCaptureDone(deviceno.l)
Procedure escapiClose()
If escapiDLL > 0
If IsLibrary(escapiDLL)
CloseLibrary(escapiDLL)
EndIf
escapiDLL = 0
EndIf
EndProcedure
Procedure escapiOpen()
escapiDLL = OpenLibrary(#PB_Any, "escapi.dll")
If escapiDLL = 0
ProcedureReturn #False
EndIf
Global ESCAPIDLLVersion.ESCAPIDLLVersion=GetFunction(escapiDLL,"ESCAPIDLLVersion")
Global countCaptureDevices.countCaptureDevices=GetFunction(escapiDLL,"countCaptureDevices")
Global deinitCapture.deinitCapture=GetFunction(escapiDLL,"deinitCapture")
Global doCapture.doCapture=GetFunction(escapiDLL,"doCapture")
Global getCaptureDeviceName.getCaptureDeviceName=GetFunction(escapiDLL,"getCaptureDeviceName")
Global initCOM.initCOM=GetFunction(escapiDLL,"initCOM")
Global initCapture.initCapture=GetFunction(escapiDLL,"initCapture")
Global isCaptureDone.isCaptureDone=GetFunction(escapiDLL,"isCaptureDone")
ProcedureReturn #True
EndProcedure
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
- 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 ich pushe den Thread nochmal. Wollte mich mal erkundigen ob schonwas gefunden worden ist, warum die Aufnahme nicht wie gewünscht funktioniert. Der Code im Thread oben wurde aktualisiert und ist somit auf meinem momentanen Stand.
Wäre sehr cool wenn ihr euch mal die Aufnahmefunktion anschauen könntet! Wie gesagt es wird eine Avi aufgenommen, welche aber nicht abgespielt werden kann!
mfg deify
Wäre sehr cool wenn ihr euch mal die Aufnahmefunktion anschauen könntet! Wie gesagt es wird eine Avi aufgenommen, welche aber nicht abgespielt werden kann!
mfg deify
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
Re: avifil32.dll
Kannste das Projekt bitte mit allen Dateien inkl. Icons in ein Zip kopieren.
Hab grad keine Lust das alles zusammenzusuchen...
Hab grad keine Lust das alles zusammenzusuchen...
"Papa, ich laufe schneller - dann ist es nicht so weit."