ATEM Miniシリーズで黒画面を一瞬出し自動で戻す

Pocket

前回の「OBS Studioで黒画面を一瞬出し自動で戻す」のATEM Mini版です。

動画眼の次期バージョンで「真っ黒い画面を検出してチャプターを打つ」という仕組みを研究しているので、UT/インタビュー中に最低限の操作で録画データに黒画面を挿入する方法として紹介します。

できるだけATEM Miniシリーズどれでも使える方法になるよう考えていますが、手元にATEM Mini Extreme ISOしかないので、もしかしたら他機種では上手くいかないかも知れません。その際はコメントでお知らせいただければできるだけフォローしたいと思います。

■ATEM Miniシリーズで黒画面にする方法(手動操作編)

ATEM Miniで黒い画面を出すにはいくつか方法があります。ざっと

  • 「BLACK」ソースに切り替える
  • 「FTB」(Fade To Black)ボタンを押す
  • PinPで現在のソースの上にBLACKソースをかぶせる

の3つがあるかと思います。一長一短あるので1つずつ解説してみます。

・BLACKソースに切り替える

BLACKソースは文字通りなにも映像がない真っ黒な画面を映すだけのソースです。ATEM上では4〜8系統ある入力ソースと同じ入力源(ソース)として扱うことができ、ソースボタンの並びにある「BLACK」ボタンを押すだけで切り替わって真っ黒になります。

ソース切り替えボタンの並びの1つである「BLACK」ボタン

ただこのハードボタンは「BLACKソースに切り替える」動作なので、もう一度押しても元のソースに戻ってくれません。例えばソース「1」を表示していた時に「BLACK」を押した後は、もう一度「1」を押す必要があります。これは「一瞬だけ黒画面にして戻す」という場面ではやや扱いづらいでしょう。

よって今回はこのボタンは使いませんが、概念として「ただ真っ黒画面を表示するだけのBLACKという特殊なソースがある」ということだけ覚えておいてください

・「FTB」(Fade To Black)ボタンを押す

次はFTBボタンです。こちらはソースではなくトランジション(画面変化時の効果)の1つです。押すと真っ黒な状態にフェードアウトし、もう一度押すと元のソールにフェードインします。今回の目的にはピッタリです。

ただフェードイン、フェードアウトに少し時間がかかってしまいます。このフェード持続時間(レート)はATEM Software Controlで赤枠の数値で変更できます。

単位は「秒:フレーム」のようです。例えば1080/30p(秒30フレーム)の設定なら「0:15」にすれば0.5秒かけてふわんと黒くなる/戻るという感じです。

なお、効果がかかっている間、音を途切れさせたくない場合は、画面右の「パレット」タブの一番下にある「フェード・トゥ・ブラック」の中の「Audio Follow Video」のチェックを外せば良いはずです。

同じボタンで黒->戻すが行えるので指を置いたまま2度押しすればいいので、これを短めのレートで使うのが第一選択かなと思います。

・PinPで現在のソースの上にBLACKソースをかぶせる

3つめの方法はピクチャインピクチャ(PinP)を使います。PinPの使い方は検索してください。子画面ソースはBLACKで良いでしょう。特徴としては黒くする範囲を自由に設定できるという点。まだ検討中なのですが動画眼3の黒検出機能では、画面全部を真っ黒にしなくても、「左上隅の一定範囲が黒になったら」という判定条件も組み込もうかと思っています。配信などをしている場合、画面全部が真っ黒になると見ている人が「あれ?」と気になってしまいますので、さりげなく片隅だけ黒くするだけでも検出できるようにしたいなと。その場合はPinPを使って画面の隅にBLACKソースを表示すれば良いでしょう。

■黒くして一定時間後に自動で元の画面に復帰する

ATEM Miniでは所定の操作を自動で実行できるマクロ機能があるのでこれを使います。ATEM Mini Extremeシリーズには写真のように6つのマクロ実行ボタンがついているのでサクっと押せます(ちょっと密集している上に小さいですが…)。

非Extreme系統だとATEM Software Controlのマクロウインドウから実行するか、MixEffectのようなネットワーク経由で操作するリモコンアプリを使うなどする必要があります。

・マクロ設定手順

ATEM Software Controlで「マクロ」メニューから「マクロ」を選びウインドウを開きます。

「マクロ」ウインドウ

①「作成」タブを選択

②「+」ボタンを押し、マクロ名称(ここでは「Blank & Back」としましたがなんでもOKです)を設定。

するとメイン画面に赤枠が出て手順指示待ちになります。

ここでまずFTBをオンにするため一度クリックします。

次に画面の上の方に出ている「ポーズを追加」を押し、継続時間として秒とフレームを指定します。

これも30p設定なら30フレーム=1秒なので、0:15なら0.5秒相当です。そしてFTBを解除して元の画面に戻すためもう一度「FTB」をクリック。

その後、マクロウインドウに戻り、②で押した「+」の位置が赤丸ボタンに変化しているのを押すと記録終了で、③のように指定した名前が空欄に追加されます。

FTBのレートも「0:15」にした場合、

  1. フェードアウトに0.5秒
  2. 待ち0.5秒
  3. フェードインに0.5秒

で計1.5秒のトランジションが自動で実行されるかと思いますがちょっと違うようです。マクロは指定秒数待ってボタン操作を実行するので、1.と2.は同時にカウントされます。言い換えれば待ち時間よりFTBレートが長い場合は、フェードアウトが終わるのを待たずにフェードインが始まります。

今回の用途では全体として目障りでないくらい効果が持続しないと同時に、ソフトウェアが確実に黒画面を検知できるよう、真っ黒の時間を最大化する、という観点では、

  • FTBのレートを0:01〜0:05など短め
  • マクロの待ち時間を0.15(0.5秒)くらい

にするのが良さそうです。

FTBを他のことにも利用するのでレートは1:00にしておきたいという場合は、

  • FTBのレートを0:05に変更する
  • FTB(フェードアウト)実行
  • 待ち時間
  • FTB(フェードイン)実行
  • 待ち時間(フェードアウトが終わるのを待つ為0:05以上)
  • FTBのレートを1:00に戻す

のようにレート変更までマクロに含めておけばいいでしょう。

マクロを設定した後は、「ファイル」->「本体に設定を保存」してATEMの電源を切っても消えないようにしておくのを忘れずに!

OBS Studioで黒画面を一瞬出し自動で戻す

Pocket

次期動画眼での機能追加について書いたばかりですが、またひとつ思いつきました。

動画眼はUT(ユーザテスト)やインタビュー録画にチャプターを打って分析を効率化するというツールですが、後で見返す時ではなく、その実査中(録画中)にどうやって誰が手軽にチャプターを打つかというのも大きな課題です。そのひとつにWebアプリと時計を同期してポチポチしていく動画眼マーカーがありますが、今回全く別の方法を思いついて実験を始めました。

それは「動画の真っ黒なフレームを検出してチャプターにする」というアプローチです。例えばATEM MiniですとFTB(Fade To Black)ボタンがあります。1回押すとフェードアウトで画面が真っ暗になり、もう一度押すと解除されてフェードインで元の映像に戻ります。モデレーターなり録画オペレーターがタスクの切れ目などでこれを押しすぐ解除することで、録画/配信される映像が一瞬暗くなります。これを動画眼側で検知することでチャプターに自動変換できるのでは、と考え実証コードを書きました。どれくらいの黒を閾値とするかなどチューニングは必要ですが基本的に動いてる感じです。

■OBS Studioで黒フレームを作る

UT/インタビューの収録でATEM Miniを使っているモノ好きはそう多くはないので、OBS Studioを使った場合も検討してみます。単に画面を真っ黒にするだけなら何もないシーンを作ってそれに切り替えるだけです。ホットキーを設定しておけばキー操作1つで実現可能です。ただそこから戻すのにもう1操作必要になります。空シーンに切り替える->1秒待つ->元のシーンに切り替える、という手間が生じるのは不便です。戻し忘れたらコトです。これを1操作で自動化するのが本記事のテーマです。

真っ黒いシーンを作る

シーン一覧の「+」ボタンで新規シーンを作ります。名前をBlackとかBlankとかわかりやすいものにしておきます。中身(ソース)は空っぽのままでOKです。

ホットキー(キーボードショートカット)を割り当てるには「設定」画面から「ホットキー」を選び、作成したシーンに対する「シーン切り替え」の欄に希望のキー操作をセットします。

ちなみにOBS StudioのホットキーはOBSがバックグラウンドにいても反応します。録画中、同じPCでメモ取りなども兼ねる場合、CommadやCtrlキーなどの組み合わせにするとか、ファンクションキーなど間違って押さないキーアサインにしておきましょう。ここでは録画中他の操作はしない想定で「B」キーを割り当てます。

なおOBS Studioではシーンをかえると音声セッテイングも独立になるので、そのままだと音がなにも鳴らない状態になってしまうのでご注意ください。音声系ソースを元シーンからコピーするとか、このシーン自体を新規で作らず、「元シーンを複製して映像系ソースを消す」などして作った方が良いかも知れません。シーンを作り分けるか、特定ソースのON/OFFを制御するかどちらが楽かはケースバイケースだと思います。

プラグイン「Advanced Scene Switcher」をインストール

OBS Studio単体では実現できなそうなのでプラグインの力を借ります。Advanced Scene Switcherを使います。最新版はOBS Studio 28〜対応です。OBS Studioは27までと28以降でプラグインの規格が変更され互換性がありません。Advanced Scene Switcherの最新版を使う場合はOBSも28以降にしてください。どうしてもまだOSBを28以降にできない人はプラグイン側の旧バージョンを探してみてください。今回はOBS Studio 29.0.2にAdvanced Scene Switcher 1.20.5を使用しています。

またMac版だとOBS、プラグインともにAppleシリコン(M1/2)版とIntel版が分かれています。お使いのOBS Studioにあわせてプラグインをダウンロードしてください。GitHubのダウンロードページにはmacos用だけでもx86(Intel用)、arm64(Appleシリコン用)、Universal(両用)があります。.pkgはインストーラー版でしかるべきフォルダに自動でインストールしてくれますが、セキュリティチェックが厳しい端末だとかえって手間かも知れません。そういう場合は.zipを落として自分でプラグインフォルダにD&Dで入れると良いでしょう。

自分(M1 Max機)はOBSをAppleシリコン版にするのを忘れていて、プラグインだけAppleシリコン用を入れてメニューに出現しないなと思って悩みました。

インストールに成功すると、OBS Studioの「ツール」メニューに「Advanced Scene Switcher」が出現します。

「自動シーンスイッチャー」というのが標準であって紛らわしいですが別モノです。

Advanced Scene Switcher設定 〜マクロ設定(Macroタブ)

「ツール」メニューから「Advanced Scene Switcher」を開き、「Macro」タブに移動します。

ここで、「Blackシーンに切り替えられたら1秒後に元のシーンに戻す」というマクロを作成していきます。いきなり完成形がこちら。

まず①のブロックで「+」から空の新規マクロを作成し、名前を決めます。ここでは「Blank and Back」としましたがなんでも良いです。

次に②のブロックでマクロ処理が発動する条件を定義します。ちょっと手順がややこしいですが、まず「If(もし)」「Scene(シーンが)」を選びます。すると下段に「Current scene is(現在のシーンが)」が選ばれて「–select scene–(シーンを選択)」が選択可能になるので、「–select scene–」を真っ黒シーンである「Black」にします。これで「シーンがBlackになった時」という発動条件が定義されました。更に冗談で時計マークが「No duration modifier(遅延指定なし)」にかわると思いますのでこれを「For at least(少なくとも)」に変更し「1.00」「seconds(秒)」にします。これで、「シーンがBlackになって最低1秒経過したら」という意味になります。

最後に③のブロックで「その時何が起きるか」を設定します。まず上段で「Switch scene(シーンを切り替える)」を選びます。すると下段に3つのセレクターが出るので、それぞれ「Previous Scene(前のシーン)」「Current Transition(今のトランジション)」「0.20」などとします。「Previous Scene」はBlackシーンにする前に選択されていたシーンを覚えておいてその状態に戻してくれます。もちろん特定のシーンを選べばそちらに移ってくれます。そこは好き好きで。2番目は切り替わり時の効果に関するもので「カット」ならスパっと瞬時に切り替わります。「フェード」ならふわんと切り替わります。「Current Transition」は普段スタジオモードでデフォルトで使っているものが自動で選ばれるんだろうと思います。3番目の秒数はフェードする場合にかける時間です。カットだと突然映像が途切れた様にも見えるので、ごく短めのフェードくらいがいいんじゃないでしょうか。

これで「Blackシーンが選ばれたら1秒後に元に戻す」という動作のマクロ「Blank and Backが完成しました。

Advanced Scene Switcher設定 〜一般設定(Generalタブ)

最後に忘れてならないのがAdvanced Scene Switcherプラグイン自体の動作をオンにするという操作です。このプラグインは動作条件に当てはまる状態にあるかどうかを常に監視するために多少なりとも負荷がかかります。ので必要な時だけオンにする方が良いんじゃないかと思います。

タブを「General」にします。

赤枠の「Start」をクリックすれば起動します。すぐ上の「Inactive」が「Active」になっていれば起動中ということです。その下の項目で起動の自動制御ができます。

On startup of OBS: OBSの起動時

Automaticaly start the scene swither when: 録画や配信を開始した時

また先のホットキー設定画面でON、OFF、ON/OFF切り替えのショートカットを割り当てて手動操作することもできます。

個人的には録画や配信を開始した時に一緒にスタートするようにしておくのが無難な気がします。

■まとめ

ということで、かなりニッチなニーズだと思いますが、OBS Studioで「画面を一瞬真っ黒にして戻す」を1操作で実行する設定を解説しました。

動画眼で自動認識するのに、画面全体が真っ黒になるのをキーにするか、いやそれだと見ている人がびっくりしちゃうので、例えば画面の片隅だけちょこっと黒くなるのを探させるか、なども思案中ですが、仮に「画面の片隅だけ黒い」状態を作ろうと思えばそういうシーンを作るだけなので応用は効くかなと思います。ただ元々複数シーンを使い分ける実査の場合、それぞれのシーンに対して隅が黒いバージョンを用意するのは管理上、手間が大きいかなと思っていて、とりあえずは画面全体を黒いことを条件にする形で実装を進めていく可能性が大です。ATEM MiniでもFTBを使う方が簡単ですし。

ATEM Miniで自動復帰をするにはマクロを使えば良さそうですが、ハード的にマクロキーがあるのはExtremeシリーズだけなのが悩ましいかもですね。

動画眼の次期アップデートについて

Pocket

今月中にリリースを目論んでいる動画眼3の新機能について解説します。

動画眼は動画ファイルに対して頭出し用のチャプターを打ってUTやインタビューの見返しを楽にするツールです。チャプター情報はシンプルなフォーマットのテキストデータで生成するのですが、これを別のツール、別の時間で作っても良いぞということで、UT/インタビューの実査中にリアルタイムでチャプター打ちするツールが動画眼マーカーです。

チャプター情報をもつ.dggn.txtファイルは動画の先頭を0分0秒基点としてそこからの経過秒数で管理されています。中身をテキストエディタで見ると、

のようなタブ区切り形式で、1項目がチャプターの位置を示す秒数、2項目がメモ、3項目は話者を示す1桁の数値となります。

さて、これを動画眼マーカーでリアルタイムに作るには、動画の録画開始(0秒点)と同期してタイマーをスタートさせる必要がありました。これが慌ただしい実査現場では負担になってしまったり、うっかりブラウザを終了させてしまったり、録画システム(OBS Studioやクラウド会議ツールの録画機能)側が止まってカウンターがリセットされたりといったトラブルにも弱いということがあります。

そこで新バージョンでは「動画眼マーカー側では一旦時刻をベースにしたタイムスタンプでデータを作り、動画眼3に読み込む時点でその動画の録画スタート時刻を引き算して同期する」というアプローチを取り入れてみました。

例えばセッションが朝10時に開始されたとすると、

みたいなログになります。PCの内部時計を参照するので記録開始時に特別な操作は不要になります。

そして事後に動画眼3で動画ファイルとこのログファイルを読み込んだ時に、動画の正確な録画開始時刻(ここでは10時00分00秒とします)を引き算して、

とする仕掛けです。セッションの開始時間は予定より早まったり遅れたりしがちですし、必ずしもそのタイミングで録画開始するとは限りません。必要なのはあくまで録画をスタートした時刻です。その正確な録画開始時刻を機械的に知る方法は3つくらいあるかなと考えています。

  1. 動画ファイルの生成時刻
  2. 動画ファイルのファイル名
  3. 動画内にタイムスタンプを合成しておく

1.はmacOSでもWindowsでもファイルのメタ情報として自動的に記録されます。2.は録画に使うツールによりますが例えばOBS Studioなら標準設定でファイル名に月日時分秒が入るようになっています。これら2つは特に意識しなくても取得できる可能性が高いので次期動画眼3もこれらを反映させるボタンを実装しています。3.については少し準備が必要ですが、これまたOBS Studioでいえば、こちらの記事を参考にしていただくなどして動画の片隅に時刻を入れておき、あとで先頭フレームに映る時分秒を読み取って同期ダイアログに打ち込んでいただく形が考えられます。

単純に映像に時計を映しこんで置くだけでもいいかも知れません。

いずれにせよ、録画側(映し込む時計を含む)と動画眼マーカーを使うPCとで時計が一致していることが望ましいので、PCのNTP(時刻合わせ)サーバーをしっかり設定しておく、電波時計を使うなど時計合わせは気を遣うに越したことはないしょう。

というわけで、

  • 動画眼マーカーで時刻ベースのログを出力できるようにする
  • 時刻入りログを動画眼3で開いた時に、動画ファイルのメタデータなどを使って換算補正する

と両ツールの同時アップデートにて対応する計画です。

一応実装は完了していて動作チェックしている段階なので、3月中に出せればと思っています。

■その他の機能追加、バグフィクス

同時に長らく対応できずにいたバグ修正や機能追加も色々しています。

  • Premiere Proで書き出したcsv形式のマーカーのインポートに対応
  • 100分を越えるタイムコードが正しく表示できなかったのを修正
  • Premiere Proの書き起こしデータの新フォーマットに対応

是非お試しいただければと思います。

動画眼マーカーのスマホ最適化(v1.2)

Pocket

動画眼用のインデックス打ちを実査セッション中にリアルタイムで行うWebアプリ、動画眼マーカーを更新しました。

■V1.2の更新内容

スマホ用のシェアボタンを設置

これまでPCブラウザなら動画眼で直接読み込める.dggn.txtファイルに保存できましたが、スマホではそれができずやむを得ずコピーボタンでクリップボードの格納になっていました。別途なにがしかのアプリにペーストして保存や送信をする必要がありました。それがシェア(共有)ボタンになったことで、スマホにインストールしてある任意のメッセンジャーアプリ(SlackやLINE、Messengerなど)で送信できるようになり、ちょっぴり楽になると思います。私の周りの現場でも関係者Slackがあることが多く、セッション後すぐにSlackにアップできたら重宝しそうです。

iOS15 Safari向け最適化

iPhoneのEdgeでばかり検証していましたが、Safariだと要素が画面に収まらずスクロールが必要になっていたのを最適化しました。iOS15以降のSafariはアドレスバーが下側になり太さが動的にかわるので新しい調整が必要だったようです(height: 100dvhという新しい単位を使うといいらしい)。

またフォントや文字サイズをいじって視認性を向上させました。

再読込時の最新CSS適用

いわゆるキャッシュバスターを仕込み、常に最新のCSS(レイアウト設定)が読み込まれるようにしました。これはどちらかというと自分のように開発作業で繰り返し読み込む時くらいしか影響しないかもですが一応。

■動画眼マーカーのURLルール

動画眼マーカーはWebアプリなのでURLで簡単にバージョン切り替えができるようにしておきます。もし最新バージョンで不具合があれば以下のルールで古いバージョンをご利用ください。

/marker/に続けてバージョンナンバーを入れれば当該バージョン、なにも指定しなければ最新版、というルールです。

■今後のアップデート予定

本ツールのキモとなるタイムスタンプ同期をテコ入れしようと思っています。現在の手動同期(「せぇの」で合わせ)に加え、OBS StudioやATEM MINIなどのAPIからタイムコードを取得して同期する実装を考えていたんですが、もう少しシンプルに、時刻を使った方法にしてみようかなと。マーカー上では、「現在時刻 メモ 話者コード」のような形式で記録します。

録画ファイル側でどうやって正確な時刻を取得するかですが、

  • ファイルの生成時刻
  • ファイル名
  • 手動入力

辺りから選べるようにしようと思います。例えばOBS Studioの場合、デフォルトではファイル名に時分秒が入るのでそれを自動識別するようにします。(クラッシュ時のデータ保存のため)mkvで録って後からmp4に再多重化する運用の場合、mp4のファイル生成時刻は再多重化時点のものになってしまいます。運用によってファイル名かファイル生成時刻のどちらかを保全するようにします。あるいはOBSであればタイムスタンプを映像に合成しておくのも良いでしょう。これで再生開始時刻を見て手打ちできるようにしておきます。

言葉でみるとちょっと手間にも思えますが、できるだけ動画眼3側で自動化を試みるので、実査開始時に同期を気にする必要がなるメリットの方が多きかなと現時点ではイメージしています。もちろん従来の方法も残すようにします。

OBS StudioやATEM MINIの同期は同一PCや同一ネットワークで使う場合には確実、便利そうですが、自分の関わる現場だとリモートで見学している人がマーカー入力をする場合が圧倒的に多いのであまり活躍の場がないのが実情でちょっと優先順位を落とそうと思います。

リアルタイムクロックを使う場合、各PCの時計がきっちりあっていることが必須ですが、今時インターネットにつながっていればデフォルトでMicrosoftやAppleのNTPサーバーが使われてるでしょうし問題ないかなと。またリモートの場合、タイムラグが気になりますがたぶん多くの実務ではYoutube Liveなどの配信プラットフォームよりもラグが出にくいZoomやTeams、Meetといったオンライン会議サービスを使うことが多いと思うので、そう何秒もズレることは考えにくいかなと思っています。一応動画眼3インポート時にオフセット秒数を指定できるようにしてもいいかなと思っています。

なんとか夏休みの宿題ということで着手したいと思ってますが、動画眼マーカーと動画眼3の両方を更新しないとなので、ちょっとお待たせするかも知れません。

動画眼3のアップデート 2022年4月

Pocket

2021年末に公開した動画眼3をちょこっとアップデートしました。

コードサインができたら正式に3.0にしようかなと思い2.9.9としてましたがまだWindowsで実現できてないので2.9.10とします(笑)。なんかよくよく調べても安い証明書でコードサインしたところでWindows上でのセキュリティ警告の出方はほとんどかわらないっぽいのと、現状での反響をみるとデジタル証明書の費用が見合わない気がして…

Mac版は後述の必要性があってデジタル署名してみました。MacとWindowsで別個に年1万円くらいするのが地味に痛いです。なんせ無料配布のソフトなのでご勘弁ください。未署名だと会社のPCにインストールできないよとか具体的なデメリットをご連絡いただければモチベーションになるかも知れません。

ともあれ変更内容と修正内容について説明していきます。

■新機能

SRT形式の字幕ファイルのインポートに対応

SRT形式とは字幕の形式の1つで、実は動画眼2ではこの形式の読み込みに対応していました。Premiere Proが音声テキスト書き起こしにベータ対応した時点で実装したんですが、その後、話者識別フラグ(「話者 1」「話者 2」)が書き出されるテキスト形式を使った方が便利だと気付いて動画眼3ではそちらを使う用にし、SRT形式でのインポートはつけていませんでした。

しかし先日試したNottaというクラウド書き起こしサービスでもSRT形式出力が可能で、より様々な書き起こし手段への対応という観点で復活させた形です。

使い方はPremiere Proテキストの追加読み込みと同じで、「ファイル」メニューの「ログを追加する(インポート)」を開きます(今回「インポート」という文言を足してみました)。「ファイルを開く」ダイアログが開くの下部のプルダウンメニューでSRT形式を選択します。Windows版なら最初から形式選択プルダウンメニューが見えていますが、macOSの場合は左下の「オプション」を押さないと出て来ないのでご注意ください。

macOSでのダイアログ例

SRT形式には話者識別の情報が含まれないので、インポート時点ではすべて話者コード0になります。

自動スクロールの抑制チェックボックスを追加

動画眼3では動画の再生に伴ってメモ一覧が連動してスクロールします。ただ手動でメモ一覧をスクロールした際に、強制的に元の再生位置に戻るのがフラストレーションに感じることもありました。

そこで今バージョンでは自動スクロールをON/OFFするチェックボックスをつけてみました。設定は保存されます。

  • 手動スクロールしたら自動スクロールが解除される
  • 再生地点を移動したらまた自動スクロールが再開される

みたいな制御も検討していますが、どういう形が便利か詰め切れてないので、一旦任意でON/OFFという形にしてみました。ご意見いただければ幸いです。

ちなみに従来でもメモ内容を編集している時は自動スクロールは抑止されていました。

動画編集ソフトライクなJ/K/Lショートカットに対応

Premiere ProやDaVinci Resolve、frame.IOといった動画編集ソフトで一般的なJ/K/Lキーを使った再生制御ショートカットを実装してみました。再生速度をシームレスに加減速しながら視聴するためのシャトルダイヤル的な操作方法です。

  • Lキー:押す度に加速。停止中に押すと1倍速再生。
  • Kキー:停止キー(等倍再生に戻る)。停止中に押すと1倍速再生。
  • Jキー:押す度に減速。停止中に押すと0.75倍速再生。

文で読んでもイメージしづらいかもですが、指3本を横並びのJ/K/Lキーに置いて下記操作をすると幸せになれるかも知れません。

ちなみに動画再生ソフトではJキーで1xから更に減速していくとスローではなく逆方向再生に切り替わります。しかし動画眼3が使用するChromeブラウザのVideoコンポーネントが逆方向再生に対応しておらず、苦肉の策としてスローとなるようにしてみました。必要かどうかは微妙です。

またPremiere ProではKキーは常に停止。frame.IOでは停止からの再生もできるという違いがありました。わかってれば後者の方が便利かなと思いそちらに倣いました。

また各種テキストボックスにフォーカスがある時は聞きません(文字入力になる)。

■不具合修正

ログのインポート後に動作が不安定になるのを修正

別ファイルから追加読み込みした後に件数が多いと重くなってしまう不具合がありました。動作を最適化したのでPremiere Proからの書き出しファイルなど行数の多いデータでも瞬時に終わるようになったかと思います。

Premiere Proの書き起こしデータを読み込む際、話者名を標準の「話者 1」などから変更してあるケースに対応

Premiere Proの書き起こしデータ(テキスト形式)は標準で「話者 1」のようなフラグをもっています。従来この数字の部分を識別して動画眼3上での話者コード(色分け)情報に置き換えていました。しかしこれをPremiere側で事前に変更してしまうと正常に読み込めずクラッシュしてしまうバグをもっていました。

今回、もし数字を拾えなかった場合は一律で0を割り当て、正常にデータを最後まで読み込めるように修正しました。

M1 (Appleシリコン)用バイナリが実行できない問題の修正

macOS用として、M1 (Appleシリコン)搭載機用とIntel搭載機にわけてインストーラーを配布していましたが、前者が「壊れている」といったエラーになり使えない状態でした。現行macOSの仕様で、dmgファイルをローカルで生成してそこからインストールする分には動くのですが、一度サーバーにアップして、ダウンロードしたものを使うとセキュリティでひっかかるという仕様のようです。しかもM1のみ。ので、自分の環境では気付きませんでした。

今回コードサイン(デジタル署名)によって実行可能になったんじゃないかと思います。

言ってもそんなに重いソフトではないのでたいした差はないかもですが、とりあえず初回起動時の最適化がない分、起動が速い気がするくらいです。

内部ライブラリの更新(セキュリティ向上)

直接はユーザが意識することはないですが、内部のChromeコンポーネントが100系となるElectron 18系に更新されました。最適化やセキュリティアップデートも含まれるので、特に新機能の追加がなくても定期的にやっておきたいところです。

OBS Studioでリアルタイム日時を挿入する

Pocket

先日OBS Studioを使った録画案件でリアルタイムの日時(時計)を入れてほしいという要望がありました。

以前も紹介しましたが、Windowsの場合はSnazという時刻やストップウォッチをテキストデータとして保存しつづけるユーティリティを動かし、そのファイルをテキストソースで読み込む方法がありました。

しかし最近MacBook Proを使うようになり、改めてmacOSでも同様のツールがないか探してみたんですが見付からず。ちょっとしたスクリプトを書けば済みそうな気がしたんですが、ならばと思いついてWebページとしてJavaScript + CSSでデザインも込みで実装しOBSの「ブラウザ」ソースで読み込んでしまえと。

同様の考え方は既にあったみたいで、こちらなど表示形式もカスタマイズできていい感じです。

ただ今回要望のあった日付は入れられないし、CSSもOBS上に設定が必要だったので、URL一発で日時表示ができるページを作ってしまいました。

URLはこちら。>https://do-gugan.com/obs_clock/

デザインはこんな感じです。位置やサイズはOBS側で好きに変更可能。

OBSにブラウザソースを使って日時を挿入

OBS Studioの「ブラウザ」ソースをシーンに追加し、上記URLを指定するだけです。

「ブラウザ」ソース設定例

OBSの内蔵ブラウザでJavaScriptを実行するので、最初に読み込んで表示されてしまえばあとはインターネット通信はなくても良いはず。1秒毎にサーバーに読みに行ったりすることはありません。フォントはGoogleフォントで丸ゴシック系のものを使ってます。白い背景でも見えるよう黒縁をつけています。

現状カスタム性はまったくありませんが、要望があれば日付のON/OFFや曜日表示、カラー変更くらいはつけてもいいかも知れません。あとローカルにファイル一式をおいて読み込むこともできそうな気がするので、GitHubにでも公開しましょうかね。

取り急ぎ現状のものでよろしければご自由にお使いください。(サーバー不調などで予告なく停止していたらごめんなさい)

2022.10.27追記:カラーなどスタイルの上書き方法について

フォントカラーの変更についてコメントいただいたので、OBS側の設定でスタイルを変更する方法について補足します。

OBSのブラウザソースにはCSS(スタイルシート)を上書きすることができ、ここでフォント、色、サイズ、配置などを自由にカスタムできます。「ブラウザ」ソースのプロパティ欄を下にスクロールすると、「カスタムCSS」欄があるはずです。

ここに例えば写真のように「body {color:red;}」などと入れれば赤色になります。

「ブラウザ」ソースのプロパティ画面

CSSの書き方は割愛しますが、現状のソースは以下のようになっているので、必要な部分を上書きする形で記載いただければ良いと思います。

「body{〜}」が全体共通、日付だけの指定は「#date{〜}」、時刻は「#time{〜}」をいじれば個別に調整可能です。

カラーコードはこちらなどでお調べください。

動画眼3の公開ベータ版をリリースしました

Pocket

2022年、あけましておめでとうございます。

秋ごろから取り組んでいた動画眼の新バージョン、動画眼3の公開ベータ版をリリースしました。なんとか2021年末を目標にしていましたが、やたら仕事が立て込んできて、仕事納め後に最終調整して大晦日も作業していたんですが、結局日をまたいでしまったので元旦リリースとしました。

残念ながら正式版としての公開は間に合いいませんでしたが、機能的にはほぼ完成していて、この後は配布方法の調整(ストアで配布するかとか)になりそうなので、まずは気軽に試せるインストーラー形式でも配布しておくという意味もあって一旦ベータ版として出すことにしてみました。是非お試しいただきフィードバックいただければと思います。

2022.1.7追記:

GitHubリポジトリも公開しました。改善要望やバグレポートなどはこちらのIssuesに直接投稿していただいてもOKです。

■ついにMacに対応!

2019年にフルスクラッチで再構築した動画眼2から2年半でまたもフルスクラッチした動画眼3の最大の見どころは、ついにmacOSに対応した点です。ElectronというWeb技術をベースにしたプログラミング環境に移植することで、ほとんど追加の手間なくWindows用とMac用に両対応させることができるようになりました。自分でもMacを使うことが増えてきていて、Windowsでしか使えない動画眼2をメンテナンスするよりも、ここで頑張ってまたゼロから作り直す手間をかけてもElectronベースに移行しておこうと決心したのです。現時点ではようやく動画眼2相当の機能を盛り込んだというレベルで、2->3になって新しくできるようになったことはそれほどないんですが…

両対応するにあたって、各OS標準のキーボードショートカットとのコンフリクトを避ける意図で、従来シリーズのショートカットから一部変更になったものがあります。特に再生、一時停止のCtrl + SpaceはmacOSではIMEの切り替えなどで使われるので、今回、前後スキップのCtrl + Q/Wと並んでCtrl + Eに変更してみました。個人的には左手小指をCtrlキーにおき、薬指、中指、人差し指をQ/W/Rキーにおいておくとなかなか効率が良いかなと思います。ただし左Ctrlキーが左Shiftキーの上にないWindowsの日本語キーボードユーザも多いと思うので、今後なんらかの手当(ユーザカスタマイズなど)を検討したいと思っています。

またElectronは内部的にはブラウザのChromeを丸まる抱えているような構造で、メディア再生周りもHTML5技術ベースになります。その影響で、対応可能な動画形式がかなり限定される結果となりました。ただデファクト中のデファクトであるmp4は問題なく扱えるので現実としてそう困ることもないかなという割り切りです。またブラウザベースでインストール不要の動画眼Liteを活用するための推奨動画フォーマットはmp4となるので、ご理解いただければと思います。

正式版までの目標

今後、動作検証も兼ねて自分でも実務で使い、細かい調整やバグ修正をしていきつつ、正式版では以下の点を目指しています。

  • コードサイニング証明書によるデジタル署名
  • 自動アップデート機能の実装

1つ目は主にインストール時の警告抑止のためです。Windowsだと結局ダウンロード実績がないとSmart Screen警告が出てはしまうのですが、一応身元表示が出るだけいいかなと。また最終的にMicrosoftストアやMac AppStoreなどでの配布も視野にいれており、そのためのマイルストーンとして念願のコードサイニング証明書取得にむけて手続きを進めているところです。

2つ目は、やはり当サイトを熱心にチェックいただいてる方ばかりではないと思うので、アプリを起動するたびに自動的に新バージョンをチェックしてお知らせするようにしたいと思います。実はこのためにもコードサインが必要だったりして、1つ目とセットで今後の課題としています。

■動画眼のその次

動画眼は基本的に動画ファイルに対してメモをチャプターとして打ち込んでいくツールで、UTやインタビューの事後分析のためのツールです。セッション中にリアルタイムで入力するために動画眼Noteがありますが、今後はこれを大幅に刷新していく予定です。単にセッション中の記録だけでなく、事前のタスク設計や事後のまとめ作業などUT実務のより広いプロセスをカバーする統合ツールを構想しています。これこそWin/Mac両対応にしたいと思っての、その練習として先に動画眼3に着手したようなものです。Electronにもだいぶ慣れてきたので、今年はいよいよこちらの新ツールにも取り組んでいきたいと思います。

今年もよろしくお願いいたします。

OSを問わずブラウザで使える「動画眼Lite」をリリースしました

Pocket



前記事のチラ見せからそう間を置かずリリースしていたのに、ブログでお知らせするのを忘れていました。

ひと言でいうと、インストール不要でWindows以外でも使える動画眼のビューワーを作ったよ、というお話です。JavaScriptベースの専用データ形式ファイルを用意する必要がありますが、同時にリリースした動画眼2.4で出力できるようにしてあります。なので、インデックスデータを作る人だけはWindows版動画眼をインストールして使う必要がありますが、閲覧オンリーであれば動画ファイル、htmlファイル、JSファイルの3点セットがあればWebブラウザを使ってインデックス付き動画を再生、頭出しすることができます。Macはもちろん、Webサーバーに置けばタブレットOS(iPadOS、Android、ChromeOS)でも利用可能です(スマホは画面レイアウト的に未対応です)。

動画眼Liteの詳細はこちら。GitHubリポジトリはこちら。ただしわざわざダウンロードしなくても、動画眼2.4からJSファイルをエクスポートする時にHTMLファイルも自動的に最新版を落として適切にリネーム保存してくれるようになっています。

動画眼Liteの動作デモはこちら。ガチのUT動画素材で公開可能なものがないので、個人でYoutubeにアップしたレビュー動画です。またテキストはPremiere Proのβ版機能の「音声のテキスト化」を使って書き起こしたものです。この機能で書き起こしたデータを動画眼にインポートする機能を2.3で実装しています。

組み合わせてご活用いただくとかなり簡単/安価にテキスト書き起こしUT動画見返し環境が構築できると思います。

 

UT/インタビュー動画見返しツール「動画眼」の簡易ビューワーをチョイ見せ

Pocket



謹製の動画再生ツール「動画眼2」は動画再生中のメモをタイムインデックスとセットで記録し、メモをクリックすることで簡単に当該シーンを頭出しして再生できるツールです。

最近、手軽に利用できるようになってきた各種クラウド音声書き起こしサービスを使ってUT/インタビューの全発話を文字起こしすることで、全文検索などの新しい利用方法が見えてきており、先日も動画編集ソフトのAdobe Premiere Proが先行公開機能として「音声テキスト化」をリリースして、早速その結果を取りこめるバージョンアップをいたしました。

こうして利用シーンが広がってくると、足枷になるのが

  • 専用ツールのインストールが必要になること
  • Windows専用であること

といった部分になってきます。動画眼2はフリーで提供しているため、年額数万円かかる電子署名を取得するに至っておらず、Windows8/10ですとダウンドーロ/インストール時にSmartScreenによる警告が出る状態です。法人ですとPCへのソフトインストールは許可制だったりして、私自身も実務でクライアントに薦めづらい状況があります。Mac版も作りたいと思いつつなかなか着手できていません。

そんな状況を改善するため、HTML5/JavaScriptを使った簡易ビューワー「動画眼Lite」を作ってみました。特徴として、

  • 動画ファイル、発話データファイルに加えHTMLファイルを同一フォルダにおくだけ
  • Webサーバーに配置せず、PCのローカルストレージ上に置いた状態からでもOK
  • 互換ブラウザさえ入っていれば追加インストール無しで使用可能(現状ChromeとChromeium Edgeで優先検証。FireFoxとSafariも一応動くが一部表示が崩れる。Web経由ならiPadのSafariでも動きました)

となっています。これなら動画と一緒にHTMLファイルと書き起こしデータファイル(せいぜい数KB)を渡せば相手にも簡単に使ってもらえるのではないかと。

実際にこちらで動いている状態をご確認いただけます。UTの動画は使えないのでプライベートで録ったレビュー動画ですが、、また書き起こしはPremiere Proによる処理ママですので一部不正確な部分もありますが、逆にPremiereに放り込むだけでこれくらいの品質の書き起こし&閲覧環境ができますよというサンプルとして。

アプリ版「動画眼2」と比べての制約としては、

  • テキストの編集はできない
  • 検索もできない(ブラウザの検索機能は利用可能)
  • 話者毎の色付け非対応

となります。編集はJavaScriptのセキュリティモデル(ブラウザでローカルファイルを上書きできると危ないから禁止されている)の関係上、実装は難しそうです。検索と色付けは正式リリースまでにはなんとかしたいと思っています。検索と色付けは対応しました。

またデータファイル形式も動画眼2の.dggn.txtを直接読み込むことは難しいので、動画眼2側で動画眼Lite形式のファイルを吐き出す機能を追加する予定です。

■技術的詳細

以下、JavaScriptの制限など技術的なメモ、課題を書き記しておきます。どなたかお詳しい方に「こんなやり方あるよ」などアドバイスをいただければ有り難いです。

・ファイルを減らす

動画に同梱するファイルをなるべく減らすという意図で、CSSなども久しぶりにHTMLのヘッダー内に置く書き方をしました。またjQueryなどの外部ライブラリも基本使わないでPure JavaScriptで書いています(単に私がjQueryあまり得意でないというのもあるけど…)。

再生制御系のアイコン(▶/II)くらいはもう少し綺麗に描画したいんですが、font-awesomeみたいな外部記号フォントやビットマップを使うとファイルが増えるので躊躇しています。インターネット上のリソースにリンクするのも手だと思いますが、どうせここまでやったなら完全スタンドアローンにこだわってみたいなとか。フォントとかビットマップのようなバイナリをbase64でHTMLに埋め込む方法もあるんでしたっけ?でももし下記のようにメモデータもHTMLに埋め込む場合、あんまりHTMLの可読性が落ちるのもなんだなという気がしますね。

・データファイルの読ませ方

HTMLファイル上のJavaScriptに外部ファイルを自動で読ませるには、外部.jsファイルしかなさそうで、現状はタイムコードとメモのレコードをjson形式にしてあります。HTML側にフォームをもたせて、INPUTタグでユーザがファイルを選択すれば任意のデータファイルを食わせられるんですが、ユーザビリティとしてHTMLファイルを開いたら動画もメモ一覧もパっと出る方が楽だし間違いなくていいかなと思って、自動で読めることを重視しています。

.jsファイル内でオブジェクトを宣言するのであればjsonにこだわらず、オリジナルの.dggn.txtに近いカンマ区切り形式でもいいはずと思ったんですが、なんとなくJavaScriptならjsonだよね、みたいな感覚があったのと、手編集時にもミスが起きにくいかなくらい(そうでもないかな?)。

もっといえば、HTMLファイル内にデータまでもたせてしまえば、動画とHTMLファイルの2つだけで完結できるのでそれはそれでアリかも知れないとか思っています。どのみち動画ファイルのファイル名はハードコーディングするしかないなと思ってますし。1つのフォルダに複数セッションの動画をつっこんで渡すような場面で、ファイルが1つでも減るのは良いかも知れません。

あるいはJavaScriptで同一フォルダ内のファイル一覧が取得できればプルダウンで複数動画選択とかもできそうとか。でもこれもセキュリティ上の制約でできない気がします。

Premiere Proの音声テキスト化をユーザテスト見返し効率化に活用する

Pocket


■Long story short…

  • Adobe Premiere Proがクラウド音声書き起こし機能を実装し、簡単に字幕付き動画が作成できるようになった
  • 書き起こしたテキストはsrtフォーマットでエクスポート可能だった
  • 拙作の動画インデクシングツール「動画眼」をsrtインポートに対応させた
  • ユーザテスト(UT)やインタビュー動画をテキスト検索で頭出ししながら視聴できるようになった!

■Premoiere Proの「音声テキスト化」機能がβリリース中

Adobeの動画編集ソフトPremiere Proが音声テキスト化に対応しました。2021年3月現在、まだ正式リリースではなく、事前登録制なのですが、こちらのページから申し込みをしておくと順次利用可能になるようです。

私は12月に申し込んで3月までかかりました。今はもっと早く有効化されるかも知れません。正規機能となった後の料金システムは不明ですが、AdobeのクラウドAI機能はいままで追加料金をとったケースがない気がするので、このまま無料で使えるのかなという望みを抱いています。

精度は他のSTT(Speech To Text)サービス同様、完璧とはいきません。Watsonのように辞書登録機能もないので、例えばユーザーテスト動画を食わせた場合、製品固有の機能名とか画面名みたいな台詞はほぼ壊滅的でしょう。

それでも動画をドロップして数クリックでテキスト化され、字幕として動画に入れることができてしまうので非常に重宝すると思います。

■このテキストを「動画眼」でも使いたい!

動画眼は私が作って配布している動画インデックス付き再生ツールです

動画を再生しながらメモを書くと再生タイムインデックスとセットで記録してくれて、次にそのメモをクリックすると当該シーンが瞬時に頭出しされる、という特徴をもっていて、ユーザテストやインタビュー動画の見返しやプレゼンテーションに活用できます。現状Windows向けでフリーで配布しており、オープンソース化もしています。

このツールで、自分でメモを手打ちするのではなく、各種STTサービスの出力データを食わせて、全発話をインデックス化したら検索とかもできて便利じゃね?ということは3年くらい前に思いつきました。ちょうどAmazonやGoogle、Microsoft、そしてIBMなどがこぞってクラウドSTTサービスに参入しだした頃です。これらのサービスを使えばGoogle Documentなどで書き起こすのと違って、タイムインデックス情報付きの結果が得られるのでフォーマットさえあわせてやれば「動画眼」で簡単にインポートすることができるのです。ただこれらのAPIサービスは初心者には利用が難しく、また動画から音声データを抽出して送信する必要もあったため、そこら辺をGUIで簡単にできるツールとしてLynxTipsをかなり動くところまで作成しました(今はちと事情があってしばらく放置中)。

そんな折り、今回Premiere Proが音声テキスト化機能をβながらサポート。この手のでいつも後回しにされがちな日本語もいきなり対応しています。これなら黒画面(ターミナル)を叩くことなくGUIで動画ファイルから直接書き起こしができます。しかも無料(執筆時点)!これを使わない手はないだろうというわけです。

■Premiere Pro → srt形式書き出し → 動画眼2読み込み → (゚д゚)ウマー

早速同サービスを申し込んで試して見たところ、書き起こしたデータはsrt形式という動画字幕形式のデファクトスタンダード的なフォーマットでエキスポートできることがわかりました。動画字幕用なので当然タイムコードも含んでいます。

そこで早速「動画眼2」にもsrt形式のインポート機能を追加(v2.3)。黒画面なし、マウスクリックだけで発話インデックス再生、検索ができるUTふり返り環境が構築できるようになりました!

実際の様子をYoutubeにあげておきますので、よろしければ見てみてください。

なお、Adobe Premiere Proはサクブクリプション形式のソフトウェアです。

単品、もしくはPhotoshopやIllustratorとセットのコンプリートプランを契約する必要があります。安価で買い切りのPremiere Elementsではこの機能は使えないのでご注意ください。