オンライン講義YouTube配信実録(11)―おまけ:機材・設定編
ありがたいことに、オンライン講義配信の技術的なことについて、学内で問い合わせをいただく機会が多くなってきました。そこで、機材や設定について少し細かくまとめておくことにします。すでに
あたりにまとめてはいますが、改めてということで。いろいろ問題解決、改善など経た上での最終版です。まだベストとは言えませんが。
どういうタイプの講義を配信しているのかについてはこちらから見てください。シンポジウムとか違うタイプのイベントの配信はここからカスタマイズが必要になります (これから2つほどそういうイベントが控えています…)。
ハードウェア
- カメラ:SONY A6400 + SEL1670Z
- マイク:RODE Wireless Go + audiotechnica AT9904
- 配信用パソコン:Apple MacBook Pro 16inch
- スライド用パソコン:講師の私物
- スイッチャー:Black Magic Design Atem Mini Pro
- 照明:Neewer LEDライト480 LED
- その他:iPad, iPhone, カメラ・照明用三脚、各種ケーブル
画像のように配線します。講師の先生は自分でスライドを操作します。スライドの映像とカメラ(マイク音声含む)映像の2回線をAtem Mini Proに入力し、そこからMBPに入力します。Atem Mini Proは回線やPicture in Pictureの切り替えに使用します。
カメラは最初Lumix G8を使っていましたが、どうもきれいな映像にできなかったので、私物のA6400に変えました。気づいた人いるでしょうか。Atem Mini Proは4K入力は受け付けますが、出力は1080pなので基本的にすべて1080で動かしました。4K配信やってみたい!
ですが、じっさい多くのYouTuberが強調するように、だいじなのは映像より音声です。講義やセミナーであれば絶対にピンマイクをおすすめします。Wireless Go+AT9904は安心の組み合わせでした。
PCについては、配信ならほんとうはMacよりもWindows機のほうがやりやすく、しかもコスパがいいはずです。ただし絶対的な性能は必要なので、ゲーミングPCなど「やりすぎ」くらいのスペックのPCを用意するのをおすすめします。
それでもぜんぶで50万ほどあれば必要な機材は揃います。大学などある程度大きな組織であればどーんと揃えちゃえばいいんじゃないでしょうか。
オペ
講師の先生の研究室にお邪魔して設営して配信します。前もって下見に行って電源やLANの接続、明るさなどを確認しておきました。
毎回だいたい45分前から準備開始です。何もなければ時間的には余裕、何かトラブルがあってもリカバリー可能な時間です。
開始前
- 機材設営(20分程度)後、ライブ配信テスト
- 30分前:ツイッターで「このあとすぐ!」的ツイート
- 5分前:カメラ録画開始 (念のため録画もしていました)
- 3分前:Zoomミーティング開始 (YouTubeでの配信と同時に、少人数の学生さん相手にZoomも開いていました)
- 2分前:YouTubeライブ配信開始 (流すのは画像スライドショー)
- 1分前:iPhoneからTwitterライブ開始 (YouTubeへの誘導の役割)
- 定刻:YouTubeをカメラ映像に切り替え、講義開始
講義中
じっさいに配信された動画はこちらからご覧ください。
- 先生はスライドを操作しながら講義に集中
- スイッチャーでカメラ画像・スライド・Picture in Pictureを切り替える
- YouTubeチャット欄を中心に、ツイッター、Zoom、メールをチェック (家で見てるスタッフからメールでトラブル報告が来たりする)
- チャット欄から質問を抜き出し、メモアプリにコピペする
- 参考リンクをはったり、適当なコメントをしたり、チャット欄でちょっと遊ぶ
- 質疑応答の時間になったらiPadを先生に渡し、メモアプリで質問を見て答えてもらう
けっこう忙しいです。ですが、これくらいなら分業するほどのものでもないかなと思います。分業したほうが意思疎通がめんどくさそうです。
終了後
- 講義が終了したら、画像スライドショーに切り替えて配信は継続
- Twitterライブ、カメラ録画は終了
- YouTubeチャット欄に「ありがとうございました、次回もよろしく」コメントをして、YouTube配信終了
- Zoomの学生さんたちと先生の質疑応答→Zoomも終了
- 撤収
機材運搬・設営・撤収は多くの回で学生さんアルバイト1人に手伝ってもらいました。配信中の作業はワンオペです。アルバイト無しで1人で1日2回設営・配信・撤収をやると心身にかなりのダメージがあります笑
ソフトウェア:OBS
基本は、Atem Mini Proからの映像音声を受け取って、OBSでYouTubeに配信します。配信用の主なパラメータ設定は以下のとおりです。
- 映像ビットレート:6000kbps
- エンコーダ:ソフトウェアエンコーダ (x264)
- 音声ビットレート:160
- エンコーダプリセット:medium
- 音声サンプリングレート:48kHz
- 基本(キャンバス)解像度:1920x1080
- 出力(スケーリング)解像度:1920x1080
最初はもっと低いビットレート(たしか2000)でやっていたのですが、ネットやCPUの速度の様子を見ていると大丈夫そうだったので6000に上げました。少し映像はよくなった気がします。ネットは基本的に有線で約1Gbps出てたので余裕でしたし、CPU使用率は10%程度くらいに収まってました。もうちょっと攻められたかも。
OBSではその他に次のような機能を使いました。
- 授業開始前と開始後に流すスライドショー (ソース→画像スライドショー)
- PC内に保存している動画の再生 (ソース→メディアソース)
- Slido (後述)のウィンドウキャプチャ (ソース→ウィンドウキャプチャ)
その他のソフトウェア
Zoom
Zoomに流す映像音声はNDI Virtual Input というプラグインを使って、OBSからのアウトプット(YouTubeへ配信するものと同じもの)を流していました。Zoomは電力を食うし、映像音声もあまりきれいでないので好きではありません。ただものすごいスピードで進化しているので目が離せません。
Slido
アンケート投票ウェブアプリです。リアルタイムで投票結果が表示されるので、参加体験マシマシです。カメラ・スライド映像との切り替えに気を遣いますが、それに見合うリターンはあります。詳しくは以下のエントリをどうぞ。
メモ
macOS標準のメモアプリです。YouTubeライブのチャット欄から質問をコピペします(MBP上)。すると、iCloudを通じてiPadのメモアプリにそれが反映されます。質疑応答の時間中にどんどん来る質問もこれでリアルタイムに先生に伝達できました。便利。
前エントリ
で述べたように、今回ここまでできたのは、私がかなり都合のよいポジションにいたからだと思うので、これからの課題はどうやって制度化するかですね。講義中の配信操作をする人間が純粋な技術スタッフでもなく純粋に内容のみにかかわるわけでもないので、誰がそこをやるのか難しいところかなと思います。
オンライン講義YouTube配信実録(10)―完結編
とくに新しい情報もないですが、シリーズ完結編です。合計26回のライブ配信、主に音ズレなど細かいことはあったものの、致命的なトラブルはなく終えることができました。開始3分前までネットが繋がらないとかいうヒヤリハット事案もあったんですが(わはは)、表面化しなくてよかったです。
とくに気をつけていたわけでもないですが、体調を崩すことなく完走できたのもホッとしました。時節柄、熱なんか出すとすべてストップしてしまいますからね。機材運びでギックリ腰やらずに済んだのも助かりました。
今回のシリーズでは、配信の技術的な事柄はほぼぜんぶ自分でやったんですが、やはりなかなかたいへんでした。それでも何とかなったのは:
- ふだんからYouTubeを見まくっているせいで、カメラ、ガジェットや配信方法についてそれなりに知識があった
- もともと遊軍的なポジションで比較的自由にできる時間があるのでそれを注ぎ込めた (自分の研究はできないし授業動画制作と重なって死、でしたが)
- 裁量労働制()
などの要因があったからだと思います。レギュラーな仕事や会議の詰まっている教員や事務の方では難しいかなあという印象です。もちろん大学にはスーパーな方々が多数おられるのでやれてしまうんでしょうが、スーパーな方々のがんばりに期待するのはよくないです。
(で、これだけ時間注ぎ込んでも、ツイキャスとかインスタライブとかどうなのとか、調べられなかったことたくさんだし、ほんと時間が足りないですね。)
とはいえ、何と言ってもふだんとは桁違いの方々、そしてふだんとはちがう層の方々に見ていただけるので、ものすごくやりがいのある仕事ではありました。先生方の講義の素晴らしさありきの話ですが、やはりインターネットというのはすごいですね。ハード・ソフトの進歩もすごい。いったんこれを知ってしまったら元には戻れない感じです。ニューノーマル。
これからどうなるんでしょうね。ノウハウ共有して戦力を増強したいところですが、さて。
オンライン講義YouTube配信実録(9)― Atem miniとV-02HD
ひさしぶりの更新です。音ズレについては、前回書いた
教えてもらった方法でやっています。それでも起こるときは起こりますね。起こったのは、「スライド+PinPでカメラ」からカメラ映像のみに切り替えたときです。しばらくすると、映像が早回しになる感じで動いて音声に追いつきます。このまま解決しないままシリーズは終わってしまいそうです。。。
これまたすごく細かい話ですが、以前
や
で書いた、スイッチャーにかんする、Atem mini (Pro)とV-02HDでは帯に短し襷に長しですね、という話。
どちらも解決方法はあるようで、Atem mini (Pro)の方は「マクロ」を使うということですね。いや、わかってはいたんですが、解説してくれてる動画があったので紹介します。
これで、
という問題は解決できます。ただ、これは結局はソフトウェア上で切り替え操作をやることになるので、うーん。ハードウェアのボタンでポチッとやりたいですよねー。
V-02HDの方の弱点は、PinPのウィンドウの場所をワンボタンで変えられないということでしたが、こちらは、V-02HDをiPadとUSBでつないで、アプリで操作するという方法があるようです。
ウィンドウの大きさや位置の設定をpreset memoryとして複数記憶させておいて(上図)、それをiPad上でタップして切り替える(下図)ということのようです。音声に対するエフェクトも、というか基本全部これで操作できるスグレモノなんですが、まあ、iPadもう1枚持っていかないといけないのはちょっとキツい。でも、ガチの配信するならこれもありでしょうか。
Atem mini Pro ISOというのも出ましたがこれまた機能的に歯がゆいところで、お値段もそこそこ高くなってきました。決定版というものが出るのはもう少し先でしょうか。(ISOは、USB出力が2つあったら100%買いましたね。)
ともあれ、講義配信はあと1回です。いまのところ大きなトラブルなくこれているので、気を引き締めて参ります。
0項述語
とつぜん論理学ネタに復帰しますが。動画で言えばこのあたりです。
述語の項数
述語論理の原子式は項と述語からなるわけですが、述語には1項述語、2項述語、3項述語…と項数 (arity) が決められています。
日本語と対応させるなら「…は人間である」なんかが1項、「…は…を尊敬している」なんかが2項、「…は…と…の間にある」なんかが3項述語でしょうか。4項以上になると、さすがに自然言語には自然な対応物がなさそうですが、数学的にはいくらでも増やすことができます。
で、学生さんから、
では0項述語ってあるんでしょうか、あるとすればどういうものでしょう
という質問が来ました(意訳)。
答え:0項述語は、古典命題論理で出てきた命題変項のことです。日本語で言えば、文ですね。今回はこれを、モデルにおける付値の観点から説明します。
1項述語に対する付値
述語論理のモデルは、個体領域 (空でない集合)とその上の付値 からなります*1。付値は、述語論理の言語中の各語彙に、モデル中の何らかの数学的対象を割り当てます。
例えば1項述語 ( とします) には、の部分集合を割り当てます。要するに 中の個体のうち を満たすものの集合ですね。つまり、
(*) (1項述語の付値は の部分集合)
です。ここではこれからの議論のために、これに対して別の見方をします。 の部分集合を1つ決めることは、 から真理値 への写像を1つ決めることにほかなりません (こういうのに慣れている人はしばらくスキップしてください)。
例えば、として、その部分集合を1つ、これも例えば
と決めることは、 の要素のうち と には「Yes (入っていいよ)」、 には「No (入ってはいけないよ)」と決めることにほかなりません。そして、Yesを1、Noを0とするなら、これは
という写像を定めることにほかなりません。もちろん、反対に から への写像が1つ与えられたら、そこから の部分集合(yesと言われているやつら)を1つ決めることができます。
とすると、上の(*)は次のように書き換えることができます。
(**) (1項述語の付値は から への写像)
ただし、 は から への写像全体の集合を表すものとします。すでに確認したように、(*)と(**)は同じことをちがう仕方で言っているだけです。
まあ、「…は人間である」という述語は「…」に入るモノに対して、「Yes」と「No」を返す関数ですよね (オオニシに対しては「Yes」、MacBookに対しては「No」等々)。だから、(**)の見方はごく自然なもののはずです。
n項述語に対する付値
2項述語の付値は の部分集合、つまり、 の要素のペアの集合でした。つまり、2項述語 に対しては、
(*2)
でした。先ほどと同じ見方の転換をすれば、これは
(**2)
と言い換えることができます。つまり、各ペアに対して「Yes」と「No」を返す関数です。
もうおわかりかと思いますが、一般に 項述語 に対しては、
(*n)
であり、
(**n)
です。先ほどの1項述語のときの (**) はこれの の場合、すなわち、
(**1)
に当たります。
0項述語に対する付値
さて、よくわからないながらも記号的に進めていけるのが数学のいいところです。以上を踏まえると、0項述語 (というものがあるとして) に対する付値は、
(**0)
となるはずです。
集合の0乗
この とは数の0乗 () と同じようなもので、あるいみ特別な集合です。すなわち、
です。 は何でもいいんだけど何らかの要素 ( の要素とは関係ない) で、 とはその からなるシングルトン (単元集合) です。これは、この に限った話ではなく、任意の集合 に対して、
とすることができます *2。
からの写像
さてでは次は、 から への写像とはどのようなものか考えてみましょう。2つしかないはずです。すなわち、
しかありません。つまり、
ですね。で、これって、
ですね ( は集合の同型)。
一般に、 から集合 への写像を1つ決めることは、( に割り当てられる値として) 値域集合 の要素を1つ決めることにほかならず、その逆も同様です。つまり、
です。 から集合 への写像の集合は、 そのものと同一視できます。
0項述語=命題変項
これを踏まえると、(**0)は次のように書き換えられます。
(***0)
つまり、あるモデルにおける付値 は、0項述語 に対して1か0を割り当てる、ということです。付値によって1か0を割り当てられるものって何だったかと言うと、命題変項にほかなりません。ということで、0項述語とは命題変項のことやんかということになります。
以上は、0項述語というものがあるとすればそれは何かということを、述語論理のモデルの枠組みの中で数学的に整理しただけです。命題変項に対応する日本語の文というカテゴリーを「0項述語」と呼ぶことで何かおもしろいことがあるかというと、どうでしょう。無いんじゃないかなあ。
オンライン講義YouTube配信実録(8)―新・音ズレ編+スイッチャーこぼれ話
スイッチャーを変えても音ズレ出ちゃったね…ということで
途方に暮れていたのですが、ちょっと気になっていたこともありました。
気になっていたこと
今回の配信の特徴は、
- カメラとスライドの映像を切り替えたりPinPで合成したりと、かなり異なる解像度(でいいのかしら)の映像データを扱っているところ
- ただし音声はカメラに接続したマイクからの音声で一定だというところ
です。
YouTubeに配信しているときも、スライドを映しているときは「ビットレート低すぎですけど大丈夫?」と聞かれ、カメラ映像を映しているときは「ビットレート高すぎしんどい」と言われ、という状態です(そういうアラートメッセージが管理画面に出るんです)。
このあたりにヒントというか原因があるんではないかなと思っていたところに、次のようなお助けツイートをいただきました。
FF外から失礼します。人物用カメラからマイクの音声を入力して、カメラの音声としてATEM Miniに入力してみてください。ただし、人物はずっとPinPで表示させる必要があります。これで音は人物とはズレないはずです。以上です。
— 神沼三平太@恐怖箱 祟目百物語 (@3peta) 2020年8月2日
前半は現行のセッティングなのでよいとして、「人物はずっとPinPで表示させる必要があります」あたりが、私の推測とわりと合致します。つまり、カメラの映像が映されていない間にズレが生じているのではないかということです。
ただし、ずっとPinPで表示させるのは現実的でないので困ったな、というところに、
あとはMacでOBSを使っている場合は、プレビューを切ると改善する可能性が高いです。こちらもお試しください。
— 神沼三平太@恐怖箱 祟目百物語 (@3peta) 2020年8月2日
ともいただきました。つまり、OBSで配信している映像を映している画面を切るのですね。そんなことで変わるのかしら、とも思いましたが、他の方から「どの段階でズレてるのか確かめるといいよ」ともアドバイスいただいたので、テストしてみることにしました。
テスト
(1) まず、音ズレが生じるであろう方法で配信しました。スイッチャーはV-02HDを使いました(Atem Mini Proでも同じだとは思いますが)。
- OBSでプレビューを表示させて配信
- カメラ映像が表示されていない時間を作る
要するにこれまでと同様、です。すると、見事音ズレが再現しました。そして、
- V-02HDの映像・音声モニターではズレていないが、
- OBSのプレビュー映像と音声モニターではズレている (配信前はズレてなかった)
ということがわかりました。このOBSでのズレがYouTubeに反映されているんでしょうね。
このズレはOBSを再起動すると直るようですが、1回の再起動では直らないときもありました。2回やれば直ります(たぶん)。
(2) OBSが悪さをしてるんだろうという蓋然性が高まったので、教えてもらった方法を試します。つまり、プレビューを無効化しました。すると、いまのところ音ズレは生じていません。これは期待できるんではないでしょうか。
とはいえ「生じない」というのはなかなか完全に立証できるようなことではないので、過剰な期待はせず、しばらくこの方法を試したいと思います。プレビュー使えないのは操作の観点からするとわりと厳しいんですけどね。
Atem Mini Pro vs V-02HD
スイッチャーのせいではなさそうということで、改めてAtem Mini Proを使うかV-02HDを使うか、選ぶことができるわけですが、Atem Mini Proのひとつの欠点は、PinPの「主と従」をワンタッチで切り替えられないことです。つまり、
「スライド+右隅に講師カメラ」↔「講師カメラ映像+右隅にスライド」
の切り替えですね。ソフトウェアで設定を変えればできるんですが、ワンタッチではできない(たぶん)。対してこれができる、というのがV-02HDのいいところです。
この帯に短し襷に長し感、V-1HDまでいくと解消されるんでしょうか。
PinPと言えば、Zoomがこのあたりをなぎ倒す感じのアップデートを出したようですが、
なんかZoomのことは好きになれないですねえ。ふだんミーティングで使っているからでしょうね。
オンライン講義YouTube配信実録(7)ーZoomからYouTube編
この仕事は次々やってくるいろんな設定、いろんな環境で録画や編集、配信をしないといけないのでハードです。ソリューションを考えるのは好きなのでいいんですが。
ZoomからYouTubeへの配信
いつもは京都からカメラ映像をそのままYouTubeへ配信するわけですが、今回は先生が東京におられるということで、Zoomで東京と京都を結んで、Zoomの映像音声をYouTubeへ配信することにしました。
Zoomは内部にYouTubeへの配信機能を備えていて、やろうと思えばかんたんにやれてしまいます。例えばこんな感じ。
ただ、何度か試したかぎりでは画質があまりよくなく、特にスライドの文字がぼやけるレベルだったので、あきらめました。
Zoomのウィンドウ・音声をOBSでキャプチャ on Mac
ということで、こちらのMacBook Proに出てきているZoomの映像(ウィンドウ)と音声をOBSでキャプチャして、それをYouTubeに配信することにしました。
これがMacだとわりとめんどくさいです。Windowsならすぐにできるはずなんですが。すでにウェブ上にいくつも情報は出ていますが、書いておきましょう。
ウィンドウキャプチャ
まず、Macの中で動いているウィンドウを映像としてOBSに取り込むには、
という手順が必要です。
次に画面構成ですが、先生にZoom上でスライドを「画面共有」していただいて、「左右表示モード」で左にスライド、右に先生のお顔を小さく映しました。それをこちらのMacでは全画面表示するときれいです。
ただし、配信中はこちらはYouTubeのチャット欄のチェックなどをしますので、操作の際にウィンドウが動いて、変な挙動が配信画面に出てしまいます。ということで、
てな感じのポータブルディスプレイをつないで、こちらのディスプレイにZoomを全画面表示、MBP本体でYouTubeなど各種操作、ということにしました*1。
スライドはぼやけることなく、とてもきれいに表示できたと思います。お顔の方はPCのインカメラですから、画質はまあしょうがないですね。
音声キャプチャ
これがいちばん苦労したところです。Zoomから流れてくる音声、つまるところはいま自分のMac上で流れてくる音声をOBSに取り込むということなんですが…。
一般的な方法とされているのは、SoundflowerとLadiocastというアプリを使うというものですね。例えば次のような感じ(古い記事ですが)。
これがどうもぜんぜんうまく行かず(たぶんMacOSのセキュリティの関係)、けっきょくBackground Musicというアプリを使って解決しました。
アプリごとの音量調整をできるようにするのが主眼のアプリのようですが、それにミキサー的な機能もくっついていたのを利用しました。
まあこういうのをやってると何が入力で何が出力なのか、ほんとうにアタマがこんがらがってきますね。弱い。
音質は問題なかったと思います。音ズレはがんばってみましたけど、まあどうにもなりませんでした。実際の配信はこちら。
*1:もっててよかったポータブルディスプレイ、と思ったんですが、よく考えたら、この足元にふつうのでかいディスプレイも転がっていたのでした。そっち使えばよかった。
オンライン講義YouTube配信実録(6)ーslido編
今回はちょっとポジティブな話です。
配信中にアンケート投票
先生から「配信中にアンケート投票やりたいんですけど、できますか」というお問い合わせをいただきました。私がパッと思いついたのは、ニコ動の将棋中継でやってる「次の一手アンケート」でした。あのころはたのしかったですね。いまはAbemaの勢いに押され気味に感じます。
それはともかく、YouTubeライブにはそのような機能はなさそうだったので、slidoというウェブサービスを使うことにしました。
以前Twitterで成瀬尚志 @ihuru09 さんが紹介されていて、コロナ前の話ですから、成瀬さんはふつうに大学の対面授業で使われていたのですが、それをここでやってみようと思いつきました。
これはもう使用場面を見ていただくのがいちばん早いと思います:
数百人の投票結果がリアルタイムで更新されていくのでなかなか楽しいです。スマホでQRコードを読みとってアクセスするか、PCならslidoのページに行って指定のアクセスナンバー(上では#71606)を記入するか、で投票できるようになります。匿名です。
スマホでこの講義を見ている人はちょっとアクセスが難しいですが、平均して、リアルタイム視聴者の約半分に参加していただきました。
参加意識が高まって視聴者のみなさんには楽しんでいただけたと思いますし、YouTubeのチャット欄での「その他」ご記入も盛り上がりました。slidoのシステムの安定性はまったく心配なさそうなので、おすすめです。
配信の段取り
YouTubeとは独立したウェブサービスなので、配信者としては切り替えに少し気を遣います。(slidoと各配信サービスのintegrationもできるようですが、ちょっと「integrateしすぎ」な印象だったので使いませんでした。)
具体的な段取りとしては、
- slidoには予め質問を登録して、ブラウザで開いておく
- ブラウザウィンドウをOBSの「ウィンドウキャプチャ」で取り込んでおく
- 先生が質問を説明し終わったら slidoの「投票スタート」的なボタンを押す
- 同時にOBSをカメラ/スライド映像からウィンドウキャプチャの映像に切り替える
- YouTubeのチャット欄に「投票どうぞ〜」と書き込む
- 先生がスライドに戻ったら映像を切り替えて、slidoの投票受付を終了する
みたいな感じで、ちょっとわちゃわちゃしますが、講義やイベント、シンポ配信する方、いかがでしょうか。