与えられた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
でローカルにこの問題を見ることができます。
この現象を避けるためにできることはありますか?ありがとう。
ffmpegを直接実行すると、同じ結果が得られますか? – Mulvya
@Mulvyaはffmpegを直接実行していますが、出力は正常です。 (出力のfpsを設定しようとしても効果はありませんでしたが、色の問題はなくなりました)。さて、出力ビデオはWMPでは再生できず、Chromeで再生されました。 –