اصنع مقطع فيديو باستخدام Python+GST من مجموعة من الصور yyyy-mm-dd`

StackOverflow https://stackoverflow.com/questions/3520464

سؤال

لدي دليل مع مجموعة من YYYY-MM-DDالملفات المقلدة في ذلك:

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

كيف يمكنني استخدام Python Gstreamer لتحويل هذه الملفات إلى مقطع فيديو؟ يجب أن تظل أسماء الملفات كما هي.

لديّ برنامج يمكن أن يحول PNGs المرقم بشكل تدريجي إلى مقطع فيديو ، وأحتاج فقط إلى تكييفه لاستخدام الملفات المؤرخة بدلاً من ذلك.

هل كانت مفيدة؟

المحلول

الأسهل هو إنشاء رابط/إعادة تسمية هذا الملف إلى رقم تسلسل (يجب أن يكون قابلاً للتنفيذ بسهولة مع أ 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 ، ربما ، أن يكون لديك كل الصور كـ Keyframe ، ربما مع MJPEG؟

نصائح أخرى

من السهل بفرز أسماء الملفات حسب التاريخ:

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 )

مرتكز على نشر رمز باش 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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top