Frage

Ich habe ein Verzeichnis mit einem Satz von YYYY-MM-DD-Dated Dateien in AS SO:

pictures/
    2010-08-14.png
    2010-08-17.png
    2010-08-18.png

Wie kann ich Python Gstreamer verwenden, um diese Dateien in ein Video zu verwandeln? Die Dateinamen müssen gleich bleiben.

Ich habe ein Programm, mit dem PNGs inkrementell nummeriert werden können. Ich muss es nur so anpassen, dass datierte Dateien verwendet werden.

War es hilfreich?

Lösung

Am einfachsten wäre es, diese Datei in eine Sequenznummer zu erstellen/umzubenennen (die mit a leicht machbar sein sollte n=0 for f in $(ls * | sort); do ln -s $f $n && $n=$((n+1))

Dann sollten Sie in der Lage sein:

gst-launch multifilesrc location=%d ! pngdec ! theoraenc ! oggmux ! filesink location=movie.ogg

Es hätte mehr Sinn, einen anderen Encoder zu verwenden als Theora, vielleicht alle Bilder als Keyframe, vielleicht mit MJPEG?

Andere Tipps

Es ist einfach genug, die Dateinamen nach Datum zu sortieren:

import datetime, os

def key( filename ):
    return datetime.datetime.strptime( 
        filename.rsplit( ".", 1 )[ 0 ], 
        "%Y-%m-%d"
    )

foo = sorted( os.listdir( ... ), key = key )

Vielleicht willst du sie umbenennen?

count = 0
def renamer( name ):
    os.rename( name, "{0}.png".format( count ) )
    count += 1

map( renamer, foo )

Bezogen auf Der Bash -Code, den Elmarco gepostet hat, Hier finden Sie einen grundlegenden Python -Code, mit dem die datierten Dateien in einem temporären Verzeichnis nacheinander nummeriert sind:

# Untested example code. #

import os tempfile shutil

# Make a temporary directory: `temp`:
temp = tempfile.mkdtemp()  

# List photos:
files = os.listdir(os.path.expanduser('~/.photostory/photos/'))

# Sort photos (by date):
files.sort()

# Symlink photos to `temp`:
for i in range(len(files)):
    os.symlink(files[i], os.path.join(temp, str(i)+'.png')  

# Perform GStreamer operations on `temp`. #

# Remove `temp`:
shutil.rmtree(temp)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top