3.5. テストファイルの作成¶
場合によっては、特定の解像度、Duration、またはフレームレート、および特定のコンテンツを持つ、テストビデオまたはテスト画像が必要な時があります。
例えば、グラデーション カラー、TV テスト画像、カウンターまたはタイムコードなど
ここでは、テストビデオや画像を作成するための便利なコマンドとプログラムをいくつか紹介します。
3.5.1. ffmpeg でテストビデオを生成する¶
FFMPEG は、ビデオ ファイルとオーディオ ファイルを処理 (デコード、エンコード、変換など) するためのコマンド ライン ツールです。 これは、Blender を含む多くの商用および無料ソフトウェア製品で使用されています。 ツールのコアは FFMPEG プログラムと、ビデオ & オーディオ プレーヤー (FFPLAY) およびストリーム アナライザー (FFPROBE) です。
仮想入力デバイス lavfi を使用してテスト ビデオを作成できます。仮想デバイスであるため、強制 (-f) オプションを指定する必要があります。
ビデオ ソースはさまざまなオプションから選択できます。 ffmpeg documentation のセクション 14.9 以降を参照してください: allrgb、allyuv、color、haldclutsrc、nullsrc、pal75bars、pal100bars、rgbtestsrc、smptebars、smptehdbars、testsrc、testsrc2、yuvtestsrc
たとえば、 testsrc を使用すると、カラー パターン、スクロール グラデーション、タイムスタンプを表示するテスト ビデオ パターンを生成できます。
まずは、 ffplay でコマンドを試して、出力をプレビューできます。
ffplay -f lavfi -i testsrc=duration=10:size=1280x720:rate=30
図1: FFMPEG コマンドからの出力 (上記を参照)
結果に満足したら、ffplayコマンドを ffmpeg に置き換えて出力ファイルを追加します。例: test.mp4
ffmpeg -f lavfi -i testsrc=duration=10:size=1280x720:rate=30 test.mp4
また、次のコマンドは、不透明度が 0.2 に設定され、持続時間が 5 秒、解像度が 640x480、フレームレートが 10 fps の MP4 形式で赤色の背景を表示/作成します。
ffplay -f lavfi -i color=c=red@0.2:duration=5:s=640x480:r=10
結果に満足したら、ffplayコマンドを ffmpeg に置き換えて出力ファイルを追加します。例: test.mp4
ffmpeg -f lavfi -i color=c=red@0.2:duration=5:s=640x480:r=10 test.mp4
その他のコマンドとテスト形式については、 bogotobogo を参照してください。
3.5.2. FFMPEG を使用してタイムコード オーバーレイを生成する¶
タイムコードが埋め込まれたビデオが必要になったことはありますか?
ffplay -i test.mp4 -vf "drawtext=text='timestamp: %{pts \: hms}': x=500: y=500: fontsize=32:fontcolor=yellow@0.9: box=1: boxcolor=black@0.6"
このコマンドは、ffmpeg ビデオ プレーヤー (ffplay) を呼び出します。入力ビデオは test.mp4 です。drawtext ビデオ フィルターを使用すると、タイムスタンプが入力ビデオにオーバーレイされます。時刻形式は pts パラメータで指定します。
ffplay コマンドを ffmpeg に置き換え、出力ファイルを追加して新しいビデオを作成します。
drawtext フィルタと上記の ffmpeg コマンド のより広範な紹介は、 Krishna Rao によって提供されています。
3.5.3. Blender Python を使用してタイムコード オーバーレイを生成する¶
上記の ffmpeg コマンドは機能しますが、柔軟性はあまりありません。 次の Python script of Tin2Tin を使用すると、Blender でタイムコード オーバーレイを非常に簡単に生成できます。

図2: Python スクリプトから生成されたテストファイル¶
タイムコード オーバーレイを作成するには、次の手順に従います。
Blender を開き、Render パラメーター (resolution, frame rate, start and frame) を設定します。作成されるタイムコード オーバーレイの長さは、[Render]パネルの[Start]フィールドと[End]フィールドによって決まります。
Scripting Workspace に切り替え、新しいテキスト ファイルを作成し、ダウンロードしたコードをスクリプト エディターにコピーします。
[Text]メニュー > [Run Script] または Alt+P を使用してコードを実行します。
既存のビデオにこのオーバーレイが必要な場合は、それをレンダリングする必要があります。
スクリプトをカスタマイズする場合は、タイムコード テキストが 53 行目で組み立てられます。
text_strip.text = str(bpy.utils.smpte_from_frame(i))
変数 i はフレーム番号を表します (Start <= i <= End)。この値は smpte_from_frame 関数でタイムコードに変換されます。 この関数は、HH:MM:SS:FF の形式でフレーム番号からテキストを作成し、Society of Motion Picture and Television Engineers (SMPTE) の標準に従います。 テキストは Y 軸の 0.8 の位置 (ウィンドウの上部近く) に配置されます。
このスクリプトの魔法は 37 行目から 60 行目の間で発生します。 これは基本的に、プロジェクトの 開始 と 終了 の間の変数 i のループです。 i の各値に対して、正確に 1 フレームのテキスト ストリップが作成されます (44 ~ 49)。 i から i+1 (38-42)まで。次に、そのストリップの text プロパティが入力され、そのストリップがリスト added_strips (31 および 60) に追加されます。 このループの最後で、作成されたすべてのテキスト ストリップが 1 つのメタ ストリップにグループ化されます (62 ~ 66)。 タブでメタ ストリップに移動すると、個々のテキスト ストリップが表示されます。
このスクリプトを使用すると、オーバーレイを非常に柔軟にカスタマイズできます。 いくつかの例: オーバーレイ テキストにはフレーム番号も含める必要があります。
text_strip.text = "Frame: " + str(i) + " - Time: " + str(bpy.utils.smpte_from_frame(i))
オーバーレイ テキストはプレビュー ウィンドウの中央にある必要があります。
text_strip.location[1] = 0.5
タイムコードは 10 フレームごとにのみ生成される必要があります。 (これにはモジュロ演算子 (%) を使用します)。
if (i % 10) != 0:
text_strip.text = ""
else:
text_strip.text = str(bpy.utils.smpte_from_frame(i))
そしてもちろん、たとえば背景色のカラー ストリップを追加するなどして、ブレンダー VSE を使用することもできます。
Garrett が提案した別のアプローチは 、3D テキスト オブジェクトを作成し、現在のフレームに基づいてコンテンツをアニメーション化することです。
import bpy
scene = bpy.context.scene
obj = scene.objects['Text']
def recalculate_text(scene):
time_code = str(bpy.utils.smpte_from_frame(scene.frame_current))
obj.data.body = 'Current time: ' + str(time_code)
bpy.app.handlers.frame_change_pre.append(recalculate_text)
Layout workspaceに切り替えて、テキスト オブジェクトを追加します。フォント、サイズ、位置などの点でテキスト オブジェクトを好みに合わせてカスタマイズします。
テキストオブジェクトに名前を付けます。上記のコードは標準名「Text」を想定しています。
Scripting workspace に切り替え、新しいテキスト ファイルを作成し、上記のコードをスクリプト エディターにコピーします。
[Text]メニュー > [Run Scrpt] または Alt+P を使用してコードを実行します。
レイアウト ワークスペースに戻り、Playheadを移動します。Playheadの位置に応じて、テキストの内容が「現在時刻: 00:00:00:12」のように変化することがわかります。
テストレンダリングを行います。必要に応じてカメラの位置を変更します。
Video Sequence Editor (VSE) でこのクリップが必要な場合は、新しいシーンを作成します。新しいシーンに切り替えて、シーンストリップを追加します (Shift+A > Scene)。
注意: このシーン ストリップは、VSE 内のどこにストリップを配置しても、常に時刻 0 から開始されます。これは、たとえば特定のストリップに関連するタイムコードを表示したい場合に便利です。
3.5.4. プレースホルダー画像ジェネレーター¶
画像プレースホルダーはダミー画像です。これらの画像へのリンクを提供したり、コンピュータ上でこれらの画像を自分で生成したりできる Web サイトがいくつかあります。もちろん、リンクの背後にあるオンライン画像をいつでも保存できます。
たとえば、URL http://via.placeholder.com/640x360 または https://placekitten.com/640/360 1 を使用すると、ブラウザーに 640x360 ピクセルのプレースホルダー画像が表示され、コンピューターに保存できます。
図 3: via.placeholder.com からのテスト ファイル¶
図 4: placekitten.com からのテスト ファイル¶
これらのプレースホルダー画像は主に、Web ページのモックアップを作成するために Web サイトのデザインで使用されます (テキスト用の Lorem Ipsum ジェネレーターとともに)。 他の Web サイトやジェネレーターを見つけるには、Google で「画像プレースホルダー」を検索してください。
3.5.5. Blender オープンムービー¶
Spring オープン ムービーの WebM 形式は、 Wikimedia Commons からダウンロードできます。
3.5.6. 役立つウェブサイト¶
https://www.demolandia.net/: Demolandia は本質的に、映画に関連する多種多様な画像、オーディオ、ビデオ ファイル (例: 4K) が見つかるオーディオビジュアル ライブラリです。
https://file-examples.com/: この Web サイトは、開発者、デザイナー、テスター向けに設計されたサービスです。さまざまなカテゴリ: ビデオ、オーディオ、ドキュメント、画像など
訳注
- 1
placekitten.com は、翻訳時点(2024-03-22)でダウンしているようです。