Сделайте видео, используя Python + GST ​​из набора фотографий `YYYY-MM-DD` - PullRequest
0 голосов
/ 19 августа 2010

У меня есть каталог с набором файлов YYYY-MM-DD в следующем формате:

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

Как я могу использовать Python GStreamer, чтобы превратить эти файлы в видео? Имена файлов должны оставаться неизменными.

У меня есть программа, которая может преобразовывать PNG-файлы с постепенным увеличением номера в видео, мне просто нужно адаптировать ее для использования устаревших файлов.

Ответы [ 3 ]

0 голосов
/ 19 августа 2010

Достаточно легко отсортировать имена файлов по дате:

import datetime, os

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

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

Может быть, вы хотите переименовать их?

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

map( renamer, foo )
0 голосов
/ 29 августа 2010

Исходя из кода Bash, который Elmarco опубликовал , вот несколько базовых кодов Python, которые будут символически связывать датированные файлы с последовательно пронумерованными во временном каталоге:

# 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)
0 голосов
/ 19 августа 2010

Самым простым было бы создать ссылку / переименовать этот файл в порядковый номер (это легко сделать с помощью n=0 for f in $(ls * | sort); do ln -s $f $n && $n=$((n+1))

Тогда вы должны быть в состоянии сделать:

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

Было бы более разумно использовать кодировщик, отличный от theora, возможно, чтобы все изображения были в качестве ключевого кадра, возможно, с MJPEG?

...