Question

J'ai un répertoire avec un ensemble de fichiers YYYY-MM-DD à jour en tant que ceci:

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

Comment puis-je utiliser Python GStreamer pour transformer ces fichiers dans une vidéo? Les noms de fichiers doivent rester les mêmes.

J'ai un programme qui peut se transformer progressivement PNGs numérotés dans une vidéo, je juste besoin de l'adapter à utiliser des fichiers datés à la place.

Était-ce utile?

La solution

Le plus simple serait de créer un lien / renommer ces fichiers à un numéro de séquence (qui devrait être facilement réalisable avec un n=0 for f in $(ls * | sort); do ln -s $f $n && $n=$((n+1))

Ensuite, vous devriez être en mesure de le faire:

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

Il aurait plus judicieux d'utiliser un codeur différent de celui Theora peut-être, d'avoir toutes les images comme image clé, peut-être avec MJPEG?

Autres conseils

Il est assez facile de trier les noms de fichiers par date:

import datetime, os

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

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

Peut-être que vous voulez les renommer?

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

map( renamer, foo )

Basé sur le code Bash Elmarco affiché , voici un code Python de base qui les fichiers datés des liens symboliques numérotés de façon séquentielle à ceux dans un répertoire temporaire:

# 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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top