MoviePyでビデオクリップの注釈


AWS、Kubernetes、Python、JavaScriptなどのコンテンツを書く.すべての最新のコンテンツを表示するには、必ずvisit my blog そして、私のニュースレターを購読してください..

This is Day 12 of the #100DaysOfPython challenge.


このポストはMoviePy 私のサイトについて記録した短いビデオにいくつかのキャプションを注釈するライブラリ workingoutloud.dev .

必要条件
  • 親しみPipenv . 参照here Pipenvの上の私のポストのために.

  • 始める
    を作成しましょうhello-moviepy ディレクトリとインストール枕.
    # Make the `hello-moviepy` directory
    $ mkdir hello-moviepy
    $ cd hello-moviepy
    # We will write everything in main.py
    $ touch main.py
    # Add this stage, you will need to add you video clip - I added mine to the `hello-moviepy` directory
    $ cp path/to/wol-dev.mp4 .
    
    # Init the virtual environment
    $ pipenv --three
    $ pipenv install moviepy
    
    この段階で、ビデオを注釈するためにスクリプトを書くことができます.

    ビデオの注釈
    例として、私が編集している私のビデオのGIFです.

    閉じるこの動画はお気に入りから削除されています workingoutloud.dev サイト.それは約9秒長さと私はそれにいくつかのテキストを追加したい.
    ビデオを見ることから、デモで本質的に3つのものがあります:
  • 表示タスクとサブタスク.
  • サブタスクの並べ替え.
  • 現在の目標を開きます.
  • これらはそれぞれ0 : 00、0 : 03、0 : 06秒のマークで起こります.
    我々は、これらの各MoviePyのおかげで簡単にいくつかのキャプションを追加することができます.
    インmain.py , 次を追加します.
    from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
    
    video = VideoFileClip("wol-dev.mp4")
    
    上記のコードでは、単に必要なモジュールをインポートし、VideoFileClip ビデオファイル(プロジェクトのルートディレクトリからの相対パス).
    我々は今、Aを作成したいTextClip ビデオの3つのポイントの各々のためのオブジェクト.
    によるとMoviePy TextClip docs , 私たちはTextClip コンストラクタは、テキスト、フォント、色、およびフォントサイズの周りにいくつかの関連する引数を取ることができます.
    The TextClip インスタンス自体には、位置、期間、開始時刻を設定するメソッドへのアクセスがあります.賢明なデフォルトを関数に抽象化し、実装します.
    def text_clip(text: str, duration: int, start_time: int = 0):
        """Return a description string on the bottom-left of the video
    
        Args:
                    text (str): Text to show
                    duration (int): Duration of clip
                    start_time (int, optional): Time in video to start at (in seconds). Defaults to 0.
    
        Returns:
                    moviepy.editor.TextClip: A instance of a TextClip
        """
        return (TextClip(text, font="Arial", fontsize=24, color='black')
                .set_position((20, video.h - 44))
                .set_duration(duration)
                .set_start(start_time))
    
    
    # Make the text. Many more options are available.
    text_clip_one = text_clip("Create tasks and subtasks", 3)
    text_clip_two = text_clip("Sort subtasks by table header", 3, 3)
    text_clip_three = text_clip("View goals", 3, 6)
    
    ヘルパーメソッドを作成した後、我々はTextClip 私たちがビデオに追加したいそれぞれの異なる注釈のインスタンス.
    最後に、我々は一緒にそれらをすべて一緒に構成することができますCompositeVideoClip オブジェクトとビデオファイルを書き込みます.

    I am also writing out a .gif file to use as a preview of the video on this post.


    # Overlay text on video
    result = CompositeVideoClip(
        [video, text_clip_one, text_clip_two, text_clip_three])
    result.write_videofile("wol_dev_edited.mp4", fps=25)
    result.write_gif("wol_dev_edited.gif", fps=8)
    
    これでスクリプトを実行できますpython main.py . 進行状況を示すいくつかの進捗バーがあります.
    スクリプトが完了したら、我々は今見ることができますwol_dev_edited.mp4 and wol_dev_edited.gifhello-moviepy ディレクトリ.
    結果は次のようになります.


    概要
    今日のポストは、使用する方法を示しましたMoviePy パッケージをプログラムにビデオにいくつかのテキストキャプションを追加します.
    私は私が将来的にいくつかの時間を節約するために働いている私のビデオのいくつかを注釈するのを助けるためにこれを利用することを望んでいる.
    最後のコードは次のようになります.
    from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
    
    video = VideoFileClip("wol-dev.mp4")
    
    
    def text_clip(text: str, duration: int, start_time: int = 0):
        """Return a description string on the bottom-left of the video
    
        Args:
                    text (str): Text to show
                    duration (int): Duration of clip
                    start_time (int, optional): Time in video to start at (in seconds). Defaults to 0.
    
        Returns:
                    moviepy.editor.TextClip: A instance of a TextClip
        """
        return (TextClip(text, font="Arial", fontsize=24, color='black')
                .set_position((20, video.h - 44))
                .set_duration(duration)
                .set_start(start_time))
    
    
    # Make the text. Many more options are available.
    text_clip_one = text_clip("Create tasks and subtasks", 3)
    text_clip_two = text_clip("Sort subtasks by table header", 3, 3)
    text_clip_three = text_clip("View goals", 3, 6)
    
    # Overlay text on video
    result = CompositeVideoClip(
        [video, text_clip_one, text_clip_two, text_clip_three])
    result.write_videofile("wol_dev_edited.mp4", fps=25)
    result.write_gif("wol_dev_edited.gif", fps=8)
    

    資源と更なる読書
  • The ABCs of Pipenv
  • MoviePy TextClip docs
  • Pipenv
  • MoviePy
  • GitHub - project code
  • フォトクレジット element5digital
    もともと私の投稿blog . 遅滞なく新しいポストを見るために、そこのポストを読んで、私の会報を購読してください.