Blender

【Blender活用術】連番画像⇔MP4変換&タイムコード実装の超簡単ガイド

Blenderで連番画像をMP4に変換する方法を紹介したブログのサムネイル画像。キャラクターとBlenderのSequencer画面が表示されています。
unotaki

はじめに

こんにちは、うのたきです。

Mayaのプレイブラストでは直接MP4で出力できないから、AfterEffectsやDaVinci Resolveなどの動画編集ソフトを使っている人も多いですよね。

でも「変換したいだけなのに、Adobeのサブスクは高いし、変換するためだけに毎回有料版にしない?って広告出てくる無料版の動画編集ソフトを使うのもちょっとなあ…」って思うことありませんか?

実は動画編集ソフトを使わなくても「Blender」でも出来ます!

今回は「連番画像をMP4に変換する方法」、「タイムコードを入れる方法」、「MP4を連番画像に分解する方法」を紹介します。


連番画像をMP4に変換する方法

① Blenderを開き、「Video Editing」テンプレートを選択します。

② 画面下の「Sequencer」のタブから「Add」 → 「Image/Sequence」をクリックします。

③ 動画にしたい連番画像をすべて選択して(0001.pngを選んだあと、Shiftキーを押しながら最後のpng画像をクリックすれば、全部選択できます)→「Add Image Strip」を押します。

④ すると、シーケンサー画面のいずれかのチャンネルに連番画像が並びます

⑤ 右端の設定部分から、フレームレートの設定や動画範囲、保存場所、保存形式、動画のレンダリングクオリティを選びます。
もし、動画に名前を付けたい場合は、保存場所を設定した後に付けたい名前を書いてください。(例、Videos\yoieat)

⑥ 全て設定したあとは画面上の「Render」タブから「Render Animation」(Ctrl+F12)でレンダリングが始まり、先ほど設定した保存場所にmp4ファイルが作られておしまいです!

番外編 タイムコードを動画に入れる方法

続いては、タイムコードを入れる設定です。ただ動画だけ作れればいいや、と思う方はスキップしていただいて問題ありません。

やり方としては、

「Sequencer」のタブから「Add」→「Text」からテキストを作成し、
1フレームごとに『0001』、『0002』…と数字を順番に打ち込んでいけばいつかは出来ますが…それはちょっと大変ですよね!

あまりに大変なのでタイムコードを入れるスクリプトを用意しました。良ければ使ってみてください。

ちなみに下の動画の左下みたいになります。

① 上のタブの「+」→「General」→「Scripting」を選んでスクリプト画面を開きます

② 「+ New」を押します

③ 以下のスクリプトを貼り付けて一度保存してください。保存しないとスクリプトが走らなかったような覚えがあります。

import bpy

# ===== ここからタイムコードの位置を変えたりします =====
CHANNEL = 2
FONT_SIZE = 60
POSITION_X = 0.13  # 例:0.1=左, 0.5=中央, 0.9=右
POSITION_Y = 0.1  # 例:0.1=下, 0.5=中央, 0.9=上

def create_frame_counter():
    scene = bpy.context.scene
    
    if not scene.sequence_editor:
        scene.sequence_editor_create()
    seq = scene.sequence_editor
    
    for strip in seq.sequences:
        if strip.name.startswith("FC_") and strip.type == 'TEXT':
            seq.sequences.remove(strip)
    
    start = scene.frame_start
    end = scene.frame_end
    
  
    for f in range(start, end + 1):
        text = seq.sequences.new_effect(
            name=f"FC_{f}",
            type='TEXT',
            channel=CHANNEL,
            frame_start=f,
            frame_end=f + 1
        )
        
        text.text = f"{f:04d}"
        text.font_size = FONT_SIZE
        text.location[0] = POSITION_X
        text.location[1] = POSITION_Y
        text.color = (1, 1, 1, 1)
        
        # スタイル設定
        text.use_shadow = False  # Shadowオフ
        text.use_box = True      # Boxオン
        text.box_color = (0, 0, 0, 0.7) 
        
        # Outlineの設定
        try:
            text.use_outline = True  
            text.outline_color = (0, 0, 0, 1)  
        except AttributeError:
            pass
    

create_frame_counter()

④ 「▶」ボタンを押すとスクリプトが走ります

⑤ すると、SequencerのChannel2にタイムコードが入りました。このオレンジ色の細かいバーコードみたいになっているのが1フレ1フレ順番に並べられたText群です。
これを手作業でやるのは大変ですよね…。

最終フレームの数字まで作成するので、下のスクショの部分は忘れずに決めておきましょう。

⑥ あとはタイムコードを置きたい箇所に調整して、
 先ほどやったような保存場所やフレームレートなどの設定してRenderタブから【Render Animation】を押してレンダリングするとタイムコードが入ったmp4ファイルの完成です!

タイムコードの位置調整のやり方

スクリプトの6〜7行目のPOSITION_X(横位置)、POSITION_Y(縦位置)の数値を変更して「▶」ボタン押して結果を見ながら、良い感じの場所を探しましょう

『#』の後に大体この位置に置かれる数値を書いておきました。

注意点

ひとつ注意することがあって、

タイムコードを出した後、タイムスライダーを激しく動かすとBlenderが強制終了する可能性あります…。保存はこまめにしてください。

動画を連番画像に変換する方法(逆変換)

やり方は、最初に書いた『連番画像をMP4に変換する方法』とあんまり変わりません。

① Blenderを開き、「Video Editing」テンプレートを選択します。

② 画面下の「Sequencer」のタブから「Add」→「Movie」を押して連番にしたい動画ファイルを選択して「Add Movie Strip」を押します。

③ シーケンサー画面のチャンネル内に選択した動画が入りました。

④ フレームレートや保存場所、そしてファイルのフォーマットは「.png」にします。
もし、連番に名前を付けたい場合は保存場所を設定した後に、続けて付けたい名前を書いてください(例、pictures\movietest_)

⑤ 全て設定したあとは画面上のRenderタブを押して[Render Animation](Ctrl+F12)でレンダリングが始まって、設定した保存場所に.pngの連番ファイルが作られて完成です!


おわりに

Blenderで、3DCGだけじゃなくて動画編集も出来ちゃいました。

動画編集も出来ることを知って、それならAfterEffectsみたいに画像の連番をmp4にしたり、タイムコード入れたり出来るのかなあって思って試してたんですけど、本当に出来てびっくりしました。

気になった方はぜひ試してみてくださいね!

最後まで読んでくださって、ありがとうございましたー!


最新記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


ABOUT ME
うのたき
うのたき
3DCGアニメーター|絵描き
3DCGアニメーターとして働き始めて、気づけば3年目。 IT業界から3DCG業界に転職してきました。 アウトプット力を養いたくて始めました。 自分が学んだことや試してみたこと、つまずいたこと・解決できたことを、同じように悩んでいる人のヒントになればいいな、と思って書いています。 3DCGやイラストなど、好きなことをわかりやすくまとめていけたらと思っています。 よろしくお願いします!
記事URLをコピーしました