FullKenのブログ

メドレー作者

【駆け合作FINAL】映像作成について #ニコメド記事投稿祭

この記事は『駆け抜けるメドレーコラボレーションFINAL』の活動記録の一部です。
自分が関わった活動全般についてはこちら【2年間の個人活動記録】


概要

 全体構成から一年。諸事情あって映像作成も担当することになりました。頑張ります。
 まずは必要な作業をリストアップ。並行できる作業は分担して作業を進めることになりました。

作業分担

銀河P 主導

曲リスト精査
 参加者から提出された曲リストを修正する工程です。
 曲名や出典の表記の統一。これがないと登場回数はカウントできません。切替タイミングや楽曲を取り違えている場合もあるので、最終的には提出音源との比較も必要です。
 正直な話、100切替程度でも骨が折れる作業だと思います。しかしながら今回の合作の総切替数はクラシック2126回、モダン4437回・・・本当にお疲れさまでした。

切替タイミングの整理
 今回の合作では動画による切替タイミングの提出も許可されていたため、動画から切替タイミングを抽出して曲リストに反映する必要があります。やはり手作業では大変なため、銀河Pさんの方で画像解析(たぶん)による切替タイミング抽出ツールを作成して対応していました。抽出ありがとうございます!

FullKen 主導

動画レイアウト
 映像は音源と並んでこの合作の顔となるため、最も重要な工程の一つと言っていいでしょう。また、デザイン以外にもいろいろ考える必要があったりしました。詳細は後述

ツール作成
 とても手作業で動画を作ってはいられない作業量の作品なので、もちろんツール化が必要になります。今回はExcelマクロを使用して、AviUtlの拡張編集の編集データ(.exo)ファイルを作成するツールを作りました。詳細は後述


 正直、これら全てを一人で進めていたKANONさんがちょっと信じられませんね・・・なぜ助けを求めなかったのかと不思議でなりません。。。


実際の作業

全体の流れについて

 今回担当するの作業全体のイメージです。大体この流れで説明していきます。

  1. 動画レイアウト
  2. ツール作成
  3. 動画作成

 

動画レイアウト

 デザインわかんね。とりあえず過去作を参考にしよ。(重要とは)

 図.矛盾塊の表示テスト
 とりあえず全部表示できたらええんやろの精神

 

表示パーツについて
  • 曲名表示は円柱を内側から見た感じにしたかったのですが、処理が重かったので面を折り曲げる方式で代用しました。同じシーンを三分割してくっつけてます。
  • 曲名表示を三分割してくっつけた際に接続部分に縦線が入ってしまうので、それを誤魔化すためにグリッド線(図では黄色の網)を追加しました。
  • 登場回数や切替回数は、文字よりも図形の数の方が直感的に伝わりやすいのでは?と考え、過去作から表示を変えてみました。
  • フレームレートは当初30fpsで作っていましたが、記事口授モダンパートで60fpsを試しに作ってみたところ圧倒的に見やすかったため、動画全編60fps化対応をしました。(エンコ時間が倍になったよ。やったね)
  • 曲名が流れる方向は駆け合作Ⅳをベースにしています。ちなみに「逆走」の仕様は「一度使用された楽曲を逆走させる」ではなく「同じパート内でその曲が最後に流れて行った方向から戻ってくる(ただし同曲切替は常に正方向)」が正解のようです。
  • 縦回転は「同曲切替」もしくは「BPM192基準で1拍未満の高速切替」で発生します。高速切替は、移動距離の少ない縦回転にした方が視認性が良いのでは?と考えて機能を追加したのですが、記事口授モダンには1拍以上と1拍未満の切替が絶妙に混在していたために階段が発生してしまいました(想定外)
  • 曲名後ろのジャンル名は画像表示領域から文字の部分だけを割合で透過させるという無駄に器用な表示手法をしています。
  • 基本的に高速切替になると各パーツの移動速度も速くなりますが、逆に変えないとどうなるんだろう?と興味を持ったのでジャンルの色で試してみました。結果Tatoモダンパート「神(59歳)の解体ショー」でが出来上がりました。
  • 背景のパーティクルは、AviUtl付属のカスタムオブジェクト「星」を改造して横向きに流れるものを採用していたのですが、26K氏より「ランダムだったり音にリンクしていたりした方が好きですね!」との要望があったので、1週間かけてスクリプトを自作しました。
  • パート番号と構成担当、アレンジ担当の表記はずっと迷走していたのですが、銀河Pさんからの表示案を頂き、採用しました。(本編参照)
  • パートの名義が非常に長いパートがあったため流れるテロップ表示にしましたが、実はラッキーでした。音や曲の切替えに関係なく常時動いているため、無音状態で動画が再生中なのか停止中なのかの区別ができる重要なパーツになりました。

 

 図.神の解体ショー(AviUtl編集画面)

 

背景用スクリプトについて

 ※音が流れますスクリプトの公開は未定

 

ツール作成

サンプルの作成

 何もないところから仕様は出てこないので、まずは実際の動きの確認およびツールに設定するためのサンプルが必要になります。
 次のような必須表示でない項目を表示できるサンプルパートを選びたいところですが・・・

  • 切替速度:高速
  • 歌詞:あり
  • BPM:変化あり
  • 背景画像:あり
  • 共作表示:あり

普通に考えて、これだけの項目を1つのパートで埋められるはずが無いので・・・?












 サンプル:ありヨシ パート




いえ、何故か全部1つのパートで済みました(もちろん要望対応まではやりませんが)
 大変助かりましたが、まさかサンプルになる事まで見越してパート作ってたりなんかしませんよね???

 言うわけでサンプルの作成に着手しました・・・もちろん手動で作っていく事になるのですが、実は自分自身平日の昼については作業が進められず効率が悪かったので、自分が映像作成を担当する事が決まった際に声をかけてくださっていた駆け合作が好きすぎる助っ人なわさんに手伝っていただく事となりました!

 自分の方基本動作を決めてなわさんその続きを作っていただく、と言った形で進めることでスムーズにサンプル作成をすることが出来ました。
 実はその延長でツールの動作確認もお願いしていた関係で、太陽パートの曲名が動くのを世界で初めて見た人はなわさんだったりします。

その他作業も色々と助かりました。改めてありがとうございました!

ツールの仕組み

 映像作成の作業が始まる直前に駆け抜ける方式のメドレー「NICONICO ALTERNATION」を投稿されていたちゅるちんさんより、ツールの情報提供をいただきまして、基礎となる考え方について参考にさせていただきました。ありがとうございます!




 さて、ここでは今回使用したツールの仕様、入力データ(exoファイル)を作る手順についてざっくり解説していきます(誰得)

・全体像
 要約すると、AviUtlの部品をオブジェクトテンプレートに登録して、各パーツ(曲名など)で必要な部品を集めて組み合わせて再構築させています。

図.映像作成ツール 全体のイメージ



・オブジェクトテンプレートの登録
 サンプルのexoファイル(テキストファイル)をもとに登録します。

図.登録されたオブジェクトのテンプレート



・入力設定
 切替情報と呼び出すテンプレートを設定します。実際にどのように組み立てるかは裏でプログラムを組んであります。

図.入力例(コラ★スト曲名)

 

図.テンプレートの検索例



・出力確認
 出力したexoファイルをAviUtlに読み込みます。

図.出力例(グループ制御:横移動正)

 

入力データの作成

 ツールは完成しましたが、もちろんこのままでは使えませんね。入力データが必要です。というわけで・・・

 全項目の切替タイミングをフレーム単位でまとめる必要があります。

 はぁ・・・ここからは入力データを作る際にため息が出た事柄についてまとめておきます・・・

・項目ごとの切替タイミング
 各項目の切替タイミングについて基本的には曲名に管理すればいいのですが、歌詞とBPMは曲名よりも早く切り替わる事があるので別シートでの管理となりました。

・背景画像
 曲名の後ろにの表示する画像は参加者から任意で提出されていますが、提出時点では動画内でどのように表示されるかが決まっていません。つまりフォーマットやサイズはバラバラで、さらに画像内のどこを表示するかは1枚ずつ目で確かめて判断する必要があります
 というわけでクラシック373枚、モダン292枚の画像の表示位置は全て手動で設定することになりました。

BPMの線形変化
 問題:2秒かけてBPMを140から192へ線形変化させるとき、BPMが166となる時間を求めなさい。

  誤り:(166は140と192の平均値なので、0~2秒の中間点)=1秒
  正解:(謎計算式)≒1.0786秒

 単純な「距離(拍数)と速さ(BPM)と時間(秒)」の問題に見えますが、時間当たりに変化するのが距離ではなく速さなので難易度が跳ね上がります微積が絡むそうです。それっぽく変化させるだけならここまでやる必要はなかったのですが、リアルな表示を見てみたかったので・・・ThreaQさんより計算ツールを提供いただきました。ありがとうございます!

文字コード
 まずはファイル名。AviUtlで提出された画像を読み込む際にいくつか開けない画像があることを確認。調査した結果「ば」や「ぱ」などの濁点/半濁点が含まれているファイルだという事が判明しました。
 作業時には原因がはっきりしなかったのですが、どうやらGoogleDriveと解凍ソフトの競合で、「ば」→「は」+「゛」と変換されるらしく、AviUtlはこの濁点だけの文字が含まれるファイルは読み込めません
 またMac環境での「〜」Windows環境での「~」とは別の文字なうえにWindows標準でないため、こちらもAviUtlではNGとなります。
 余談ですが「あぁ~!水素の音ォ〜!!」は、前の「~」がWindows、後ろの「〜」がMacのため、OSによってはキーボード入力&完全一致検索でこの動画を探すことはできません。(謎情報)

 次にフォント。今回使いたいフォントが、動画内で表示する全ての文字に対応しているとは限りません。非対応の文字は別のフォントで代用する必要があります。
 今回はとりあえずUnicode文字(SJISでない文字)を抽出するサイトと、文字コードので範囲検索(sakuraエディタ)で疑わしい文字を探して対応しましたが、もっといい文字の探し方があれば、どこかで情報共有できればみんな喜ぶかもしれません

~要注意文字の例~

  • ギリシア文字(α、β、γ、ほか)
  • ラテン文字(Daydream café など)
  • ハングル(コンギョ など)
  • 中国語(组曲 など)
  • キリル文字(ロシア語。д など)
  • 記号(♪、★、♣、ほか)

文字コード問題は、曲リスト精査も大変だっただろうなと思います・・・
 また、今回使用したフォントは表示不可の文字を中間点「・」で表示する仕様となっていたため、動画チェック中に「最終鬼畜フランドールS」のような表記が見えただけで反射的にビビる病気にかかりました。ホント心臓に悪い・・・

 

映像作成

データの取り込み

さて、試しに曲名の切替用exoファイルを出力したのは良いですが・・・

 モダンの曲名のみの表示で75.3MB

なにこれ(゜∀。)?確かにテキストファイルだけど47.5万行ってなにこれ(゜∀。)?
※これ単体で、AviUtlへのファイル読み込みに7分半かかります。

 もちろん、このまま出典など他のexoファイルを読み込むわけにはいかないので、やむなく単体でavi出力。メインのプロジェクトファイルへは動画ファイルとして取り込むことになりました。

要望対応

 色変えやフォント変更は入力データ側で対応したものもありますが、フェード切替などはデータ取り込み後に個別で対応しています。
 対応した内容について各パート別で語りたいのですが、とても長くなるのでここでは控えさせていただきますサーセン

エンコード

 時間:太陽のみ 5時間20分
 残りはお察しください。

動画チェック

 動画チェックは運営陣の総力をあげて対応しました。
 事前に精査をしているとはいえ、動画チェックの際にも曲名のミスや要望対応の漏れをなど対応していくことになります。その中でも特にやばいのが切替タイミングの修正です。

 ほぼすべてのパーツが切替タイミングを基準に設定されているため、多数の入力データの作り直しや、一部パーツの動画再出力が必要で時間と手間がかかります。もちろんミスりたくないので細心の注意が必要です。

 また、再エンコードは放置するだけなのでまだマシですが、エンコするたびに、音や映像が飛んでいないかの通しチェックが必要となります。個別10動画+通し2動画エンコードとチェックの繰り返し・・・確か一発OKとなった動画は無かったような気がします。この期間に一体どれだけ画面を見続けた事か・・・

 

あとがき

 これまで映像作成に深く関わる機会はありませんでしたが、今回はツールのゴリ押しで何とか乗り切ることが出来ました。
 自分としては曲リスト精査の作業を気にすることなく、動画レイアウトとツール作成に集中できたことが一番の救いでした。イヌーピーさん、銀河Pさん、LEOMARUGTさん、その他曲リスト精査に関わった方々に感謝申し上げます。ありがとうございました!!

宣伝

 そういえば駆け合作が終わった後、背景用スクリプトを配布用に作り替えようとしているうちに徐々に脱線していき、気づけば音声波形表示用のスクリプトになっていたので、興味のある方はぜひ使ってやってください。今後も機能を拡張していく予定です(予定)




リンク

ニコメド記事投稿祭
駆け合作FINAL 2年間の個人活動記録