0

次のように、一連のYYYY-MM-DD日付付きファイルを含むディレクトリがあります。

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

Python GStreamer を使用してこれらのファイルをビデオに変換するにはどうすればよいですか? ファイル名は同じままにする必要があります。

増分番号付きの PNG をビデオに変換できるプログラムがありますが、代わりに日付付きファイルを使用するように適応させる必要があります。

4

3 に答える 3

0

ファイル名を日付順に並べ替えるのは簡単です。

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 )
于 2010-08-19T14:22:22.093 に答える
0

elmarcoが投稿したBashコードに基づいて、日付付きファイルを一時ディレクトリ内の連続番号付きファイルにシンボリックリンクする基本的な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)
于 2010-08-29T10:30:26.147 に答える
0

最も簡単なのは、リンクを作成するか、それらのファイルの名前をシーケンス番号に変更することです(これは、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

おそらくMJPEGを使用して、すべての写真をキーフレームとして持つために、おそらくtheoraよりも別のエンコーダを使用する方が理にかなっていますか?

于 2010-08-19T13:33:31.227 に答える