Aloha ich habe für ein Kiosk-Multimedia-System den Task viel
DivX-Files in unterschiedlicher Reihenfolge zusammen zu nähen.
Es gibt DivX-Tools die das via drag and drop können auch mit einem
simplen Filemerge Tool hat es geklappt .. allerdings nur 2 Files und
das war dann später ein Film ... und haltet Euch fest ... der Film
funktioniert sogar.
Jetzt möchte ich viele Filme zusammenfügen (auf binär-basis)
Ich habe einen Ordner in dem liegen
Film1.avi , Film2.avi usw.
Wie kann ich es jetzt scripten das PB mir alle Files schnappt und ein
großes File daraus macht. Ich bin Anfänger also bitte keine kryptischen
Erklärungen ...
Vielen Dank ... Jerry
Viele Datein binär zusammenfügen ...
So in etwa ist ein code aus einem bestehenden projekt:
Code: Alles auswählen
;*file1
If OpenFile(0,"data/self.exe")
;CreateFile(1,"selfexe.exe")
length.l=Lof(0)
*MemoryID1 = AllocateMemory(length) ; Reservieren des benötigten Speichers
If *MemoryID1
Bytes = ReadData(0, *MemoryID1, length) ; Einlesen in den Speicherblock
EndIf
CloseFile(0)
EndIf
;*file2
If OpenFile(1,"data/self.aes")
;CreateFile(1,"selfexe.exe")
length1.l=Lof(1)
*MemoryID2 = AllocateMemory(length) ; Reservieren des benötigten Speichers
If *MemoryID2
Bytes2 = ReadData(1, *MemoryID2, length) ; Einlesen in den Speicherblock
EndIf
CloseFile(1)
EndIf
;*End Datei erstellen
If CreateFile(3,"testexe.exe")
WriteData(3,*MemoryID1,length)
WriteData(3,*MemoryID2,length1)
CloseFile(3)
EndIf
Purebasic 5.0 32bit und 64 bit
I'm back from hell
I'm back from hell
- NicTheQuick
- Ein Admin
- Beiträge: 8837
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Dieser Code schnappt sich alle Film1.avi bis Film?.avi und fügt sie in ein
Film_alle.avi ein. Bei mir hat es allerdings nicht geklappt, dass man sie
einfach zusammenfügt und daraus wird dann ein großes.
///Edit:
FreeMemory() eingefügt. Danke, Kiffi!
Film_alle.avi ein. Bei mir hat es allerdings nicht geklappt, dass man sie
einfach zusammenfügt und daraus wird dann ein großes.
Code: Alles auswählen
Path.s = PathRequester("Pfad auswählen", ".\")
If Path = "" : End : EndIf ;Auf Abbrechen gedrückt
Define Max.l = 1 ;Fängt mit Film1.avi an
While FileSize(Path + "Film" + Str(Max) + ".avi") >= 0
Max + 1
Wend
Max - 1
If Max = 0 : End : EndIf ;Keine Filme gefunden
Define F_Out.l, F_In.l, a.l, *pBuffer, Size.l, Chunk.l
#buffersize = 1024 * 1024 * 2
*pBuffer = AllocateMemory(#buffersize)
If *pBuffer = 0 : End : EndIf ;AllocateMemory fehlgeschlagen
F_Out = CreateFile(#PB_Any, Path + "Film_alle.avi")
If F_Out
For a = 1 To Max
F_In = ReadFile(#PB_Any, Path + "Film" + Str(a) + ".avi")
If F_In
Size = Lof(F_In)
While Size
Debug Size
If Size > #buffersize
Chunk = #buffersize
Else
Chunk = Size
EndIf
Size - Chunk
ReadData(F_In, *pBuffer, Chunk)
WriteData(F_Out, *pBuffer, Chunk)
Wend
CloseFile(F_In)
EndIf
Next
CloseFile(F_Out)
EndIf
FreeMemory(*pBuffer)
FreeMemory() eingefügt. Danke, Kiffi!
Zuletzt geändert von NicTheQuick am 04.11.2007 14:17, insgesamt 1-mal geändert.
- NicTheQuick
- Ein Admin
- Beiträge: 8837
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken