【AI-Shorts-Creator】Youtubeの切り抜きをAIで自動化してショートを量産する方法

AI-Shorts-Creator Youtube AI 自動化

AI-Shorts-Creatorは、短い動画(ショート動画)をAIを用いて自動生成するためのツールです。

この動画は、長いビデオから注目すべき瞬間を抽出し、ソーシャルメディア用のショート動画を作成でき、クリエイターの作業を大幅に効率化させることができます。

今回は、AI-Shorts-Creatorの概要や使ってみた感想をお伝えします。

是非最後までご覧ください!

目次

AI-Shorts-Creatorの概要

AI-Shorts-Creatorは、短い動画(ショート動画)をAIを用いて自動生成するためのツールです。

この動画は、長いビデオから注目すべき瞬間を抽出し、ソーシャルメディア用のショート動画を作成でき、クリエイターの作業を大幅に効率化させることができます。

動画の抽出にはGPT-4が使われており、FFmpegとOpenCVの機能も併用することで、動画の主要なハイライトに焦点を当て、自動的にトリミングしてくれます。

そんなAI-Shorts-Creatorの特徴は、以下の6点です。

  • 動画から魅力的な部分を自動的に抽出
  • GPT-4 を使用して、動画内で最もエキサイティングな瞬間を特定
  • 正確な顔検出によりビデオをトリミングして重要なハイライトを強調
  • 手動検索を排除することでビデオ編集を合理化し、時間を節約
  • 互換性を最大限に高めるために、さまざまなビデオ形式とシームレスに連携
  • 完璧にトリミングされたハイライトにより、視聴者の視聴体験が向上

実際には、以下のように動画をトリミングしてくれます。

ソース動画

この例では、イーロンマスクをメインに切り抜きをしてくれています。

これをソース動画を指定して実行するだけですべて自動でやってくれるので、すごいですよね!

最近は、有名な配信者等の切り抜き動画が流行っており、収益化している人もいるので、このツールをうまく活用すれば、大幅に作業を効率化してマネタイズできるかもしれません。

そこで、実際のところどの程度使えるのか検証してみます。

まずは使い方から説明します。

なお、動画生成AIについて知りたい方はこちらの記事をご覧ください。
【Pika 1.0】頭の中のアイデアを動画にできる動画生成AI!使い方や料金、商用利用について解説

AI-Shorts-Creatorの使い方

AI-Shorts-Creatorは、以下のPythonバージョンとライブラリをインストールする必要があります。

■Pythonのバージョン
Python 3.x

■必要なパッケージ
pytube
opencv-python 
openai==0.28 
youtube-transcript-api
FFmpeg 

まずは、以下のGitHubのリポジトリをクローンします。

NisaarAgharia/AI-Shorts-Creator

git clone https://github.com/NisaarAgharia/AI-Shorts-Creator.git

次に、そのディレクトリに移動して依存関係をインストールします。

pip install -r requirements.txt

ここで、Openaiライブラリのみ0.28バージョンを使用する必要があるので、別途インストールします。

pip install openai==0.28

次に自分の環境にFFmpegがインストールされてない方は以下のサイトからダウンロードしてインストールします。

ffmpeg.org

ここまでで必要なもののインストールは終わりで、次はauto_cropper.pyのなかのOpenAI API Keyに自分のものを設定します。

また、video_id関数内の変数を切り抜きしたい動画に変更してください。

ここまで出来たら、以下のコマンドでスクリプトを実行します。

python auto_cropper.py

これでショート動画を作成できます。

早速実行していきましょう!

AI-Shorts-Creatorを実際に使ってみた

先ほどのPythonファイルを実行します。

すると、全部で8個のファイルを出力しました。

アウトプット動画は6個あり、動画から興味深い部分を3場面切り出した動画と、それぞれの動画で人物にフォーカスしたShort動画が作成されています。

切り抜かれた動画は、40秒ほどの動画で問題なく切り抜かれています。

ですが、人物にフォーカスされたShort動画はとてもカクカクしており、とてもクオリティが高いものとは言えませんでした。

なぜこのようになってしまったのか不明ですが、どうやら人物にフォーカスする部分で問題が発生しているようです。

ここからは、別の動画を入力してどうなるか検証します。

なお、StabilityAIが開発した動画生成AIについて知りたい方はこちらの記事をご覧ください。
【Stable Video Diffusion】ローカルでの使い方や料金体系、商用利用について解説

AI-Shorts-Creatorが正しく動作するか検証してみた

以下の動画を入力します。

こちらは対談の動画なので、人物にフォーカスすることは簡単かもしれませんが、きちんとラグがないスムーズな動画を作成できるでしょうか。

URLをこちらの動画のものに変更して、以下のコマンドを実行します。

python auto_cropper.py

結果は、以下の切り抜き動画とShort動画が作成されました。

残念ながら、先ほどと同じようにラグいShort動画が作成されてしまいました。

やはり人物にフォーカスする部分でうまくいっていないようです。

恐らくcrop_video関数の部分が正しくないために、この問題が発生しています。

原因を突き止めて、コードを修正してみましょう。

考えられる原因としては以下の点があります。

  • リサイズの不均一性: 切り取ったフレームを目的のサイズにリサイズする際に、アスペクト比が一貫していないか、サイズの変更が不均一であると、動画が不自然に見える可能性があります。
  • フレームレートの変動: 元の動画と同じフレームレートを維持していない場合、動画がスムーズに再生されないことがあります。

ここを考慮して、crop_video関数のコードを以下のように修正してみました。

修正前

import cv2

def crop_video(faces, input_file, output_file):
    try:
        if len(faces) > 0:
            # Constants for cropping
            CROP_RATIO = 0.9  # Adjust the ratio to control how much of the face is visible in the cropped video
            VERTICAL_RATIO = 9 / 16  # Aspect ratio for the vertical video

            # Read the input video
            cap = cv2.VideoCapture(input_file)

            # Get the frame dimensions
            frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
            frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

            # Calculate the target width and height for cropping (vertical format)
            target_height = int(frame_height * CROP_RATIO)
            target_width = int(target_height * VERTICAL_RATIO)

            # Create a VideoWriter object to save the output video
            fourcc = cv2.VideoWriter_fourcc(*"mp4v")
            output_video = cv2.VideoWriter(output_file, fourcc, 60.0, (target_width, target_height))

            # Loop through each frame of the input video
            while True:
                ret, frame = cap.read()

                # If no more frames, break out of the loop
                if not ret:
                    break

                # Iterate through each detected face
                for face in faces:
                    # Unpack the face coordinates
                    x, y, w, h = face

                    # Calculate the crop coordinates
                    crop_x = max(0, x + (w - target_width) // 2)  # Adjust the crop region to center the face
                    crop_y = max(0, y + (h - target_height) // 2)
                    crop_x2 = min(crop_x + target_width, frame_width)
                    crop_y2 = min(crop_y + target_height, frame_height)

                    # Crop the frame based on the calculated crop coordinates
                    cropped_frame = frame[crop_y:crop_y2, crop_x:crop_x2]

                    # Resize the cropped frame to the target dimensions
                    resized_frame = cv2.resize(cropped_frame, (target_width, target_height))

                    # Write the resized frame to the output video
                    output_video.write(resized_frame)

            # Release the input and output video objects
            cap.release()
            output_video.release()

            print("Video cropped successfully.")
        else:
            print("No faces detected in the video.")
    except Exception as e:
        print(f"Error during video cropping: {str(e)}")

修正後

import cv2

def crop_video(faces, input_file, output_file):
    try:
        if len(faces) > 0:
            # Constants for cropping
            CROP_RATIO = 0.9
            VERTICAL_RATIO = 9 / 16

            cap = cv2.VideoCapture(input_file)
            frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
            frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
            frame_rate = cap.get(cv2.CAP_PROP_FPS)  # Get the frame rate of the original video

            target_height = int(frame_height * CROP_RATIO)
            target_width = int(target_height * VERTICAL_RATIO)

            # Create a VideoWriter object
            fourcc = cv2.VideoWriter_fourcc(*"mp4v")
            out = cv2.VideoWriter(output_file, fourcc, frame_rate, (target_width, target_height))

            while True:
                ret, frame = cap.read()
                if not ret:
                    break

                # Use the first detected face for cropping
                x, y, w, h = faces[0]
                x_center = x + w // 2
                y_center = y + h // 2

                # Calculate crop coordinates
                x1 = max(0, x_center - target_width // 2)
                x2 = min(frame_width, x_center + target_width // 2)
                y1 = max(0, y_center - target_height // 2)
                y2 = min(frame_height, y_center + target_height // 2)

                # Crop and resize the frame
                cropped_frame = frame[y1:y2, x1:x2]
                resized_frame = cv2.resize(cropped_frame, (target_width, target_height))

                out.write(resized_frame)

            cap.release()
            out.release()
            print("Cropping and resizing completed successfully.")
        else:
            print("No faces detected.")
    except Exception as e:
        print(f"Error: {e}")

顔検出の一貫性、アスペクト比の維持フレームレートの一貫性を意識して修正しました。

これでもう一度実行したところ以下のように、滑らかな動画になりました!

ただ、顔検出がうまくいっていないところもあり、ここに関しては手法の変更等の対策が必要だと思います。

また、Short動画には音声がないので、音声を含めるようにしないと、このツールを使ってYoutubeなどに投稿できるShort動画の作成はできないと思います。

今後もコードの修正やツールの変更を行って、改善が見られた際はこの記事に追記します。

まとめ

AI-Shorts-Creatorは、短い動画(ショート動画)をAIを用いて自動生成するためのツールです。

この動画は、長いビデオから注目すべき瞬間を抽出し、ソーシャルメディア用のショート動画を作成でき、クリエイターの作業を大幅に効率化させることができます。

実際に使ってみた感想は、そのままではまともに使用できず、コードを修正することで使用できるようになりましたが、このツールを使ってYouTubeなどに投稿するクオリティの動画を作成するにはまだ改善が必要だと感じました。

このツールが改善されてさらに強力になると、クリエイターにとっては実行するだけでShort動画を量産できる先進的で魅力的なツールになること間違いなしです!

サービス紹介資料

生成系AIの業務活用なら!

・生成系AIを活用したPoC開発

・生成系AIのコンサルティング

・システム間API連携

最後に

いかがだったでしょうか?

弊社では

・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
ハルシネーション対策AIツールの開発
自社専用のAIチャットボットの開発

などの開発実績がございます。

まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ
無料相談

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、サービス紹介資料もご用意しておりますので、併せてご確認ください。

投稿者

  • ゆうや

    ロボット工学専攻。 大学時代は、対話ロボットのための画像キャプションの自動生成について研究。 趣味は、サウナとドライブ。

  • URLをコピーしました!
  • URLをコピーしました!
目次