それは「動画の真っ黒なフレームを検出してチャプターにする」というアプローチです。例えばATEM MiniですとFTB(Fade To Black)ボタンがあります。1回押すとフェードアウトで画面が真っ暗になり、もう一度押すと解除されてフェードインで元の映像に戻ります。モデレーターなり録画オペレーターがタスクの切れ目などでこれを押しすぐ解除することで、録画/配信される映像が一瞬暗くなります。これを動画眼側で検知することでチャプターに自動変換できるのでは、と考え実証コードを書きました。どれくらいの黒を閾値とするかなどチューニングは必要ですが基本的に動いてる感じです。
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を使用しています。
まず①のブロックで「+」から空の新規マクロを作成し、名前を決めます。ここでは「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秒経過したら」という意味になります。
普段UTやインタビューの実査業務で録画/中継をする際、ミスや破損に備えて二重で録画するよう心がけています。ちなみにZoomやTeams、Meetなどで中継することが多いですがクライアント(発注元)のライセンスで使うことが多く、クラウド録画機能は容量や個人情報管理の観点で使えないことが多いです。後者は例えば参加者の顔が映った映像をクライアントが保持するのがNGで、後日ボカシをかけて納品するような場合、一時的にもクライアントがアクセスできるストレージにデータを保存できない、みたいな事情です。そんなこんなで手元での録画を多重化することが多いです。具体的には、ATEM MINI Extreme ISOでマルチカメラの映像を合成したPGMを作り、ATEM自身で作りつつ、中継用PCに入れてOBSで録画&Web会議サービスに中継、という感じです。
もうひとつは小型の録画機が欲しいというもの。3つ以上のカメラソースを合成する場合、ATEM MINI Extremeに処理を投げられるのはPCの負荷軽減もでき安心感があります。一方、そこまで複雑な合成が必要ない場合や、車で行けない現場の場合、Extremeを持っていかずにPC+OBSで済ませたいなということもあります。実際来月そういう案件があるのでこの時期に動いたというのもあります。ということで、ATEM MINI Extreme ISOをもってくほどでもない軽合成案件でも、OBSとは別に録画系統を確立したい、というのが2つ目の課題というか目標です。
Video AssistとNINJA Vは録画もできるモニターとして双璧というか、他に選択肢がないくらいメジャーです。ただしガチプロすぎてコーデックもプロくてビットレートが高いProResとかBlackmagic RAWとかになってしまうのが難点。SDやSSDのコストが高くついてしまいます。
Video Assistは5インチと7インチ、FHDと4Kで4製品あります。今が10インチでモニタリングしてるので、5インチはさすがに厳しいかなと思います。合焦箇所を色付けして可視化する機能(ピーキング)などはあるとはいえ。あと7インチだとSDスロットがデュアルになり(溢れたらもう片方で録る)、ミニXDRで高音質マイクを直結できるといった違いも。
正直FHDでのバックアップ録画には過分なスペックですが、そもそもの「画面付きレコーダー」に選択肢がほとんどないので致し方なし。けっこうずっしり重いですが、Hyperdeck Shuttle HD + 10インチモバイルモニターを持ち歩くことを思えば似たり寄ったりで配線も簡略化できるのでいいかなと。できればSDカード運用で外付け機器は最低限にしたいところ。また上下に3つずつ三脚穴があるので、ケージをつけなくてもSSDやマイクレシーバーを固定できてよさげ。卓上三脚ともどもヨサゲなのを物色していきたいと思います。
Web会議中の表示は問題ないのですが、裏側でファイル名やメッセージなどで参加者名が「_______」のようになってしまいどれが誰のファイルやねん!となりがち。アップロードを終えずにブラウザ閉じちゃった人がいるよ、というメールも「Your guest ____ left the studio before the entire recording got uploaded. (97%)」などとなり、誰なのか調べるには、ダッシュボードに入って100%になってる人をサムネイルで見分けるか全員ダウンロードして調べる必要があります(終了してない人はサムネイルも出ないので)。
250mほどの距離で当然HDMIケーブルやLANケーブルが敷ける距離でもなく、Wi-Fiも届きません。同一ネットワーク下にないので先日紹介したNDIなども使えません。別記事で紹介したRTMPも受信拠点側をポート開放する必要があったり遅延が大きめだったりで微妙に使いにくい。すぐに思い付くのはZoomやTeamsといったオンライン会議ツールでの参加ですが、スマホのカメラは光学ズームが弱いので、物理で寄らないと手元など細かい対象を撮ることができず、ソーシャルディスタンスやラポール形成的に不利。できれば光学ズームのビデオカメラ映像を使って配信したいなと思いました。(ちなみに最近では望遠レンズを備えたスマホもありますが、Zoomなどのアプリはそれらを使えません。ピンチズームしても標準カメラの像がデジタル拡大されるのみです。Android版に至ってはピンチズーム自体できませんでした(執筆時点)。屋外なので騒音対策としてきちんとワイヤレスマイク(Wireless GO 2)を使った音声収録をしたいのですが、これら外部マイクもスマホ版アプリは制限が大きかったりします(後述)。
もう一つの方法は作者のSteveさんがリリースしているElectron CaptureというビューワーでURLを入れ、表示された映像をOBS Studioのウインドウキャプチャで取り込む方法です(Windowsのみ)。一見、外部ツールを使う分効率が悪そうですが、Steveさん曰く「it may offer a more flexible and reliable method of capturing live video than the browser source plugin built into OBS.」とのことです。マウスカーソルが完全に隠せるとか、バッファー指定で音声同期が外れにくいなどあるようです。メリット一覧はこちら。パケットロス耐性が高く、システム負荷が低いということなので、面倒ですが使った方がよさそうですね。
上記の手順でAdd your Camera to OBS」や「Remote Screenshare into OBS」から送信URLを生成すると毎度ランダムな文字列のIDが発行され、OBS Studioなど受け側で毎回URLを書き換えなければならず不便です。また上記のようなオプションパラメーターをURLに埋め込むのも骨がおれる作業です。
そしたら以前に購入してあったUSB Camera Proというアプリが、(USB WebカメラやHDMIキャプチャの多くが対応する)UVC入力映像を表示するだけでなくRTMP始め多くのプロトコルで配信できることを発見。前記事で構築したOBS Studio + NGINXの受信環境に対して送信テストしてみました。
ただPCの様に画面共有時にシステム音声を送信する機能はないので、カメラからの音声をTeamsに流すことはできなそう。スマホ本体のマイク音声になってしまうかも。Wireless Go2のようなUSB外部マイクの音を入れるにはさらにUSBポートが必要になるし、どうかなーって感じです。なおUSB Camera Pro自体は音声モニター機能がありUVCから来た音声をスピーカーで鳴らすことはできます。