2017-05-28 8 views
2

MoviePyを使用してビデオクリップからサーバー上に自動的にGIFを作成する作業を進めています。ライブラリは、GIFを作成するためのさまざまな変換やトリミングに役立ちました。Moviepy - 時間とともに左から右に移動するフレーム(関心領域)を含むビデオを切り取る

私の現在のプロジェクトでは、移動するオブジェクトの多いビデオクリップを使用して、関心領域の自動追跡が困難になっています。 (以下のクイックGIFはシーンを示していますが、背景は削除してオブジェクトの追跡を簡単に行うことができますが、トラッキングオブジェクトはプロジェクトの範囲外です)。

以下のgifに示すように、赤色の四角形は時間とともに左から右に移動する関心領域です。 そのリージョンをトリミングしてGIFを作成したいと思います。

enter image description here

私はGIFを作成するためのビデオから四角形をトリミングどこでMoviePyを使用しています。しかし、矩形は元の座標位置に固定されています。私はその矩形を時間とともに移動させ、それをトリミングしてGIFを作成する方法を探しています。

clip = (VideoFileClip("my_video.mp4") 
     .subclip((1,10.1),(1,14.9)) 
     .resize(0.5) 
     .crop(x1=145,y1=110,x2=400,y2=810)) 

clip.write_gif("my_gif.gif") 

時間係数を追加して、この座標が時間と共に変化するようにする方法。

答えて

1

あなたはmoviepyのscroll機能を探しています。ドキュメントは不足していますが、here、ソースコードhereです。

moviepy.video.fx.all.scroll(clip, h=None, w=None, x_speed=0, y_speed=0, x_start=0, y_start=0, apply_to='mask')

パラメータ:

  • clip。スクロールの速度を決定する最終的なクリップ

  • x_speedy_speedの高さと幅を決定

  • hw作用するクリップ。これらがどのように測定されているかわからないので、ソースコードを調査したり、試行錯誤する必要があります。

  • x_startおよびy_startこれは(0,0)からスクロールを開始する距離です。

  • apply_to;マスクとは何か、あなたはそれを必要としません!

決勝コード:

clip = (VideoFileClip("my_video.mp4") 
    .subclip((1,10.1),(1,14.9)) 
    .resize(0.5) 
    .crop(x1=145,y1=110,x2=400,y2=810)) 

# You won't need to set `w` and `h` if you are separately cropping it 
new_clip = vfx.scroll(clip, w=clip.w, h=var, x_speed=speed, y_start=height_to_top_of_wanted_bit) 
new_clip.set_duration(1.0/speed) 

clip.write_gif("my_gif.gif") 

注、このコードがテストされていません。

関連する問題