Würde gerne eine function haben, der ich:
a. float percent
b. int lengthInSeconds
übergebe und die dann aus dem Clip:
gerade so viele gleichmäßig verteilte Abschnitt der Länge lengthInSeconds aus schneidet und concateniert, das 'percent' an Prozent des Clips abgedeckt werden.
Code
chunking(clip c, float percent, float lengthInSeconds)
{
clip = last
cFrameCount = last.framecount # aktueller frame count
cFrameRate = last.FrameRate() # aktuelle frame rate
chunkLengthInFrames = Ceil(lenghtInSeconds*cFrameRate) # Länge eines chunks in frames
maxChunkCount = Ceil(cFrameCount/chunkLengthInFrames) # maximal mögliche Anzahl an chunks dieser Länge
actualChunkCount = Floor(maxChunkCount/100*percent) # Anzahl der chunks die verwendet werden
distance = Ceil(cFrameCount/actualChunkCount) # Abstand zwischen chunks
# die For-Schleife geht so nicht direkt in Avisynth, aber ich weiß nicht mehr direkt wie man die ordentlich in Avisynth-Syntax umschreibt :)
for(int i = 0; i < cFrameCount; i = i + distance) { # sollte jetzt die chunks zusammen fügen
ret = ret ++ Trim(i, -chunkLengthInFrames)
}
return ret
}
Alles anzeigen
-> Geht das so? Gibt es da nichts besseres?
(hab im Hinterkopf, dass ich dafür auch schon mal eine elegante Lösung gesehen habe, aber ich finde sie nicht mehr)
Cu Selur
Ps.: könnte man eventuell eine der Decimate-Funktionen dafür missbrauchen? (wäre ja eine Art dumb-decimate mit 'actualChunkCount in distance')