BMP2AVI Fehler

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

BMP2AVI Fehler

Beitrag von sen-me »

Code: Alles auswählen

; www.purearea.net (Sourcecode collection by cnesm)
; Author: dige
; Date: 22. November 2003

Structure AVI_INFO
  aviWidth.l
  aviHeight.l
  aviFirstFrame.l
  aviNumFrames.l
  aviFPS.b
  hWnd.l
EndStructure

Enumeration
#Lib
EndEnumeration

UseJPEGImageDecoder()

Procedure AVI2BMP ()
  file.s = OpenFileRequester( "Open AVI", "", "AVI Video|*.avi", 0 )
  *INF.AVI_INFO = CallFunction( #Lib, "OpenAVIforRead", file.s )
  If *INF
    MessageRequester( "AVI Stream Info", "Size: " + Str(*INF\aviWidth) + "x" + Str(*INF\aviHeight) + Chr(13) + "Frames: " + Str(*INF\aviNumFrames), 0 )
    hBmp = CreateImage ( 0, *INF\aviWidth, *INF\aviHeight )
    
    For a = *INF\aviFirstFrame To *INF\aviNumFrames - *INF\aviFirstFrame - 1
      If CallFunction( #Lib, "GetFrameFromAVI", hBmp, a )
        SaveImage(0, "Sequence_" + Right("000" + Str(a), 4 ) + ".bmp" )
      Else
        a = *INF\aviNumFrames + 1
      EndIf
    Next
    
    CallFunction( #Lib, "CloseAVIStreams" )
    MessageRequester( "Done", "AVI splitted to bitmaps", 0 )
  Else
    MessageRequester( "Error", "Could not open avi", 0)
  EndIf
EndProcedure
Procedure BMP2AVI ()
  INF.AVI_INFO
  INF\hWnd = OpenWindow(0, 0, 0, 300, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Images 2 AVI" )
  If INF\hWnd And CreateGadgetList( INF\hWnd )
    ListViewGadget( 0, 0, 0, 300, 200 )
    
    file.s = SaveFileRequester( "Save AVI", "", "AVI Video|*.avi", 0 )
    dir.s = PathRequester( "Select images directory", GetPathPart( file.s ))
    
    If ExamineDirectory( 0, dir.s, "*.*" )
      Repeat
        Res = NextDirectoryEntry()
        If Res = 1
          img.s = DirectoryEntryName()
          ext.s = UCase(GetExtensionPart(img.s))
          
          If ext = "BMP" Or ext = "JPG" Or ext = "JPEG"
            
            hBmp = LoadImage(0, dir + img )
            If hBmp
              If INF\aviWidth <= 0
                INF\aviWidth  = ImageWidth()
                INF\aviHeight = ImageHeight()
                INF\aviFPS    = 1 ; Play 1 Frame per Second
                SetForegroundWindow_( INF\hWnd )
                If CallFunction( #Lib, "OpenAVIforWrite", file.s, @INF ) = #FALSE : Res = 0 : EndIf
              EndIf
              
              If INF\aviWidth + INF\aviHeight <> ImageWidth() + ImageHeight()
                hBmp = ResizeImage( 0, INF\aviWidth, INF\aviHeight )
              EndIf
              
              If INF\aviWidth
                StartDrawing( ImageOutput() )
                ; Make some image effects ...
                DrawingMode( 1|2 )
                Locate (1, 1) : DrawText( "PureBasic RuLeS! :-)" )
                Locate (INF\aviWidth - TextLength( img ) - 10, INF\aviHeight - 20 ) : DrawText( img )
                StopDrawing()
                If CallFunction( #Lib, "AddFrameToAVI", hBmp, -1 ) = #TRUE ; -1 Autoincrement FrameNr
                  Frames + 1
                EndIf
              EndIf
            Else
              img + " failed"
            EndIf
            AddGadgetItem( 0, -1, img )
          EndIf
        EndIf
      Until Res = 0
      AddGadgetItem(0, -1, "Done. " + Str(Frames) + " Images." )
      CallFunction( #Lib, "CloseAVIStreams" )
      Repeat : Until WaitWindowEvent() = #PB_EventCloseWindow
    EndIf
  EndIf
EndProcedure

If OpenLibrary( #Lib, "AVIServ.dll" )
  If CallFunction( #Lib, "AVI_Init" )
    
    AVI2BMP() ; Splitt AVI video into singel frames
    BMP2AVI() ; Create AVI and add *jpg, *bmp images
    
    CallFunction( #Lib, "AVI_Quit" )
  EndIf
  CloseLibrary( #Lib )
Else
  MessageRequester( "Error", "Could not open AVIServ.dll", 0)
EndIf

End


; Die Dll kann unter http://www.sunset-team.de/Download/AVIServ.zip
; heruntergeladen werden [11 kB]
;
; Nachfolgend 2 mögliche Anwendungsbeispiele:
; AVI2BMP : Konvertiert eine AVI Datei in Einzelbilder
; BMP2AVI : Erstellt ein AVI Video aus JPG, BMP Bildern eines Verzeichnises

; ExecutableFormat=Windows
; EOF
hab ich aus dem code archiv, aber er bringt mir in zeile 80

Code: Alles auswählen

If CallFunction( #Lib, "AddFrameToAVI", hBmp, -1 ) = #TRUE ; -1 Autoincrement FrameNr
ein Invalid memory access fehler
Bild
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

kann mir keiner helfen?
ich will endlich meine bilder in avi baun ^^
Bild
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Ich habe gerade das selbe Problem,
und bin beim Suchen auf diesen
unbeantwortetet Thread gestoßen...
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Da war doch mal ein Link dabei zu einer DLL.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Ja, der Link steht unten im Beispielcode:
http://www.sunset-team.de/Download/AVIServ.zip
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Ahja, hab die ganze Zeit oben gesucht und nicht gefunden. Wenn man im CodeArchiv mit Strg+F mal im Browser sucht nachdem das CodeArchiv Index komplett geladen wurde findet man unter "AVI" etwas anderes noch von dige.

http://www.purearea.net/pb/CodeArchiv/M ... nverter.pb

Dies benötigt keine zusätzliche Lib, außer den Systemeigenen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Ja, aber ich brauche die zweite Procedur,
ich will aus Einzelbildern eine Avi machen.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Die AVIFIL32.dll kann das auch umgekehrt soviel ich noch weiß:
RINGS hat geschrieben:http://www.shrinkwrapvb.com/
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Danke, ich habe das richtige gefunden:
http://www.shrinkwrapvb.com/avihelp/avihlp_5.htm
Jetzt muss ich mal schauen,
wie ich mit dem ersten VB
Code den ich mir genauer anschaue zurechtkomme ^^

edit: leider hilft er mir überhaupt nichts :-(
Antworten