2017-12-29 65 views
0

与えられたGIF(または.gifv)ファイルの速度を上げたり下げたりして、結果のアニメーションを.mp4ファイルとして保存する関数を書いています。Imageio pythonはGIFをMP4に間違って変換します

私はgifから生のバイナリデータをダウンロードし、各フレームをmp4に書き込み、mp4のfpsを何にでも設定するために、python imageioパッケージ(およびそのffmpegプラグイン)を使用しています。

私のコードがある -

def changespeed(vid, mult): 
    vid = vid.replace('.gifv', '.gif') 
    data = urllib2.urlopen(vid).read() 
    reader = imageio.get_reader(data, 'gif') 
    dur = (float(reader.get_meta_data()['duration'])) 
    oldfps = 1000.0/(10 if dur == 0 else dur) 


    writer = imageio.get_writer('output.mp4', fps=(oldfps*mult), quality=8.0) 

    for frame in reader: 
     writer.append_data(frame) 
    writer.close() 

問題はタイミングで出力色がひどく破壊されます、で、任意の予測可能性があるようには思えません。これはいくつかのgifで発生し、他の人では起こりません。私はwriterで高品質のパラメータを設定しようとしましたが、これは役に立ちません。ここで

が問題GIFの一例である -

入力:https://i.imgur.com/xFezNYK.gif

出力:問題はGfycatにアップロードしていないのでhttps://giant.gfycat.com/MelodicShimmeringBarb.mp4

私は、output.mp4でローカルにこの問題を見ることができます。

この現象を避けるためにできることはありますか?ありがとう。

+0

ffmpegを直接実行すると、同じ結果が得られますか? – Mulvya

+0

@Mulvyaはffmpegを直接実行していますが、出力は正常です。 (出力のfpsを設定しようとしても効果はありませんでしたが、色の問題はなくなりました)。さて、出力ビデオはWMPでは再生できず、Chromeで再生されました。 –

答えて

0

更新 - それを考え出しました。カラー自体は破損していません - 黒い部分は実際には透明な部分で、前のフレームのデータで置き換えられます。

関連する問題