ATEM Miniをモバイルルーター経由で操作する

お仕事ブログの方で触れたATEM MiniというHDMIビデオスイッチャーを買いました。

ATEM Mini | Blackmagic Design

ATEM Mini | Blackmagic Design

37,480円(01/31 13:08時点)
Amazonの情報を掲載しています

これは4系統のHDMI入力と2系統のアナログ音声入力を自在にスイッチ、PinP合成、ミキシングして1系統のHDMI出力および1系統のUSBカメラ出力をするものです。USBカメラとしてPCに入力できるので、SkypeやZoomといったビデオ会議ツールなどにも簡単に高品質な映像を使用できるので、ユーザテストなどで便利だろうと思い購入に至りました。製品自体を使ってみてのレビューは上記記事をご覧ください。

さて、本製品はEthernetポートがあり、Windows/Mac用のATEM Software Controlという専用ユーティリティからネットワーク経由で操作することができます(もちろんUSB直結でも可)。例えばユーザビリティテストなんかでは観察室にいる操作担当がカメラ切り替えを行ったりということができるわけです。そして今回、新コロナ対策で無観客(遠隔見学)ユーザビリティテストをしたいという相談が舞い込んで来て、インターネット越しにカメラ切り替えができないかという話になりました。同じネットワーク(192.168.aaa.bbbでいうとaaaまでが一緒)にいれば簡単なんですが、インターネット越しだとそう単純にはいきません。VPNでATEMのいるネットワークに入れれば良いのですが、客先の企業内ネットワークだとそんなわけにもいきませんよね、っていうのが本記事の話題です。

■モバイルルーターを組み合わせる場合の注意点

結局、モバイルルーターをATEMと一緒に客先に設置してもらう前提で色々実験しました。ATEM Miniからの映像はUSBでZoomなどにつなげるので、そちらは普通に客先のゲストネットワークにでもつながせてもらえば、映像送受信のパケットはモバイルルーター側とは無関係になるので速度が遅かったりギガ制限があったりしてもあまり問題になりません。

モバイルルーターを使うにしてもいくつかハマりポイントがありましたのでまとめておきます。

・有線LANポートがあるか

ATEM MiniはEthernet(有線LAN)ポートしかないのでこれがつながる必要があります。モバイルルーターの場合、別売りの充電クレイドルについていることが多いです。あるいはUQ/auのL01のようなホーム用のルーターですかね。なのでスマホでテザリングするのは現実的ではないと思います。

・VPN(リモートアクセス)サーバーになれるか(見つけられず)

モバイルルーターにWAN側からVPNでアクセスできれば簡単かつ安全です。しかし探した限りSIMの刺さるモバイルルーターでVPN(PPTPやL2TPなど)のサーバー側になれるものは見付かりませんでした。まぁそんなニーズはほぼないんでしょうね。モバイルルーターの下にさらにYAMAHAやBUFFALOなどのルーターをぶらさげることも検討しましたが、今の外出自粛ムード下では設営に出向くことができず、最悪宅配便で機材を送りつけて先方で配線作業をしてもらうことも視野にいれ、最低限の機器構成でまとめることを優先して断念しました。

もしVPNサーバー機能があるなら、下のポート開放/DMZの節はスキップしてOKです。

・代わりにファイアウォール設定でポート開放やDMZ設定を使う

ということでルーターのWAN側のIPアドレスを指定し、そこへの通信をLAN側のATEM MiniのIPアドレスに振り向けるアプローチをとることにします。いわゆるポート開放とかポートフォワーディングとかいうヤツです。しかしここでまた問題。ATEM Miniの操作に必要なプロトコル(TCP/UDP)とポート番号が調べてもわかりませんでした(ご存じの方がいらしたら是非コメントにてお知らせください)。

ということでセキュリティ的にはやや問題ですがDMZ機能を使うことに。これはNATと相性が悪い特殊なゲーム(今時あるんですかね?)などに使う、全開放的な機能です。WAN側IPアドレスへの全ての通信をLAN側の指定したIPアドレスにまるごと振り向けます。指定された側のLAN内機器からするとファイアウォールが無効化されている状態なので危険です。ATEM自体にもパスワード認証などもありません。ただまぁ最悪ATEMに不正接続されても映像チャンネルを勝手に切り替えられるくらいなのでまぁ今回はいいかなと。

おいおいちゃんとログがとれるルーターとかでポートを追っかけてみようとも思ってます。

2020.04.21追記:ATEM Miniでは未検証ですが、こちらの記事で別モデルではありますが9910番ポートだという情報がありました。次の機会に試してみます。

さて、このDMZ機能もまたあんまりモバイルルーターに必要とされる機能ではないので、場合によってはついていないこともあり得ます。事前に確認しましょう。幸い手持ちのHW-01LはOKでした。

・グローバルIPアドレスを使えるプロバイダを使う

これはルーター機器の問題ではなく契約するプロバイダ、プランの問題です。ルーターのWAN側にふられるIPアドレスがインターネット側から直接アクセスできなければVPNだろうがDMZだろうが到達自体できません。プライベートIPアドレスというと192.168.xxx.xxxみたいなのを想像する方も多いと思いますが、実は10.xxx.xxx.xxxとか172.16.xxx.xxxみたいなのもプライベートIPです。最近は大手MNOも含めデフォルトではプライベートIPアドレスが割り振られます。ルーターの管理画面や液晶画面で確認できるWAN側IPアドレスと、確認くんspeedtest.netに表示されるIPアドレスが同じでない場合、両者の間になんらかのNAT変換が介在していて外部から直接アクセスできないことになります。

こういう場合、

  1. グローバルIPアドレスがもらえるオプションをつける
  2. グローバルIPアドレスがもらえる格安SIMを契約する

のどちらかとなります。例えばdocomoの場合は標準のspモードとは別にmopera Uを契約することでグローバルIPが割り振られるようになります。私はメインのiPhone回線をギガホで契約しており、データプラスという追加SIMをHW-01Lにさしています。この場合、データプラス側のSIMにmopera Uオプションをつけてもらう必要があります。当初オンライン手続きで契約したらiPhone側についてしまい、結局電話でつけかえてもらいました。オンライン手続きでサブ回線側にmopera Uをつける方法があるのかは不明です。ちなみに200円/月がかかります(プランは500円/月のスタンダードになりますがspモード割との相殺で結果200円/月でした。シンプルプランは選べないと言われました)。

お使いのプロバイダにそうしたプランやオプションがない場合、新たに契約しなおす必要があります。ざっと調べた限りBIGLOBE、NifMO、OCNなど老舗系はさすがにたくさんIPv4アドレスをもってるせいかいまだにグローバルIPアドレスを提供しているようです(執筆時点)。またInterlinkには比較的安価で固定グローバルIPアドレスを利用できるプランもあるようです。たんにグローバルというだけだと再接続毎に違うアドレスになることがあります。特にモバイルルーターの場合は都度電源を切るので、毎回振られたアドレスを確認しなければなりません。今回のケースでは客先でルーターの電源を入れた後で液晶画面をタッチして確認してもらう必要があります。その点、固定IPであれば契約中は同一のIPアドレスなので常に同じ設定のまま接続が可能になります。業務で使う場合、それが良さそうな気がします。

(あるいはDDNS機能がルーターについていればいいんですが、これまたモバイルルーターでは装備率が低いようでした)。

 

などなど数々のハマりポイントを乗り越えて、WANからATEM Software Controlでスイッチ操作ができることを確認できました。つまり、ATEM Mini、HW-01L、クレードル、ネットワークケーブル、各種電源ケーブルを客先で接続すれば遠隔操作できる環境が作れそうということです。これくらいならケーブルと端子に対応付くラベルでも貼っておけば、なんとかお客さん側でも組み上げてもらえるんじゃないかなと目論んでいます。

ConoHaのKUSANAGI PHPが7.3になりownCloudが動かなくなったのを修復

半年くらい前、ConoHaのVPSで動かしているKusanagiサーバーで、ownCloudが

とエラーを吐いて動かなくなりました。どうもいつのまにかPHPが7.3になってて、ownCloudが7.3非対応らしいことがわかって対応待ちだと思って放置してましたが、久しぶりに本腰。

ownCloudの10.2.1はいまだPHP7.3非対応。10.3で対応予定となっているものの予定の8月って明日で終わり、、、まぁそれまで一旦PHPを7.2にダウングレードしておくことに。

というか自分では上げたことないいし、rpm -qaしてもphp73とかいない。でもphp -v は7.3。どうなってんの?と思ったけど、kusanagi-php7というパッケージで一緒にPHPが更新されるぽい。それがyum updateで適用されてしまったと。ちょっと恐い。

ということでこちらを参考にさせていただき、

で7.2系の最新版にダウングレード。しかしこれでもphp-intlは読み込まれない。PHPが7.2.13なのに対し、intlが少し古いから?

ってことで、次はこちらを参考に

する。これでphp-intlは7.2.22になるけどダメ。php -vの結果は、

2つ目の記事にある、20-intl.iniを書き換える作業は以前にもやってるらしく、.ini~や.ini.bakファイルが残ってたw。とりあえず.bakを書き戻してkusanagi restart。

あとはownCloudのWeb画面を開くと、フォルダのパーミッション系のエラーにかわるので、appsとdataドルだをchmod -R httpdして終了(なぜかownCloudを更新するとオーナーがApacheになるのも毎回の風物詩)。

次は互換性のない古いappsがアプデートできないというエラーになるので、インストールディレクトリで

などとしてアンインストール。もはやなんの機能かも憶えていないアプリ4つほど言われるままに削除。

これでどうにか起動にこぎつけました。

■yum updateからkusanagiを除外

さて、このままではまたyum updateした時にkusanagi 7.3になってしまいます。kusanagi自体は最新版がよさげなので悩ましいところですが、当面の措置として/etc/yum.confに

と追加。yum updateしても候補にkusanagi-php7-7.3.xxが出ないことを確認します。うーん、でもこれkusanagiの他のモジュールは更新されてしまうので大丈夫なんだろうか。kusanagi 関係のすべての更新を止めるのもなんだなぁ。

この辺、不透明で勝手に設定ファイルが置き換わったいとkusanagiのめんどくさいところですかね。他になんのアプリもモジュール足さない、引かない運用ならいいんでしょうけど。

毎回index.htmlが上書きされたり、ssl.confが勝手にできてLet’s Encryptの設定エラーになったり、、

 

■更新:7.3用のintlを入れておく

7.3になったら必要になる7.3用のintlを忘れないうちに入れておくことに。kusanagi-php7をyum updateで更新して7.3にした後、下の記事を参考に72を73に置き換えて実行。

そして/etc/php7.d/extensions/20-intl.iniのパスを72から73に書き換えて終了。

Crayon Syntax Highlighterを有効化してるとWordPress5.xで記事が表示されない件

Crayon Syntax HighlighterはWordPressのコンテンツにプログラムコードやターミナル入力例を載せるのに、綺麗に装飾、ハイライトしてくれるプラグインです。
重い重いと言われますが表現力は抜きんでてる感じだし、大手サイトでもないのでいまさら乗り換えるのも大変だし愛用させていただいています。
が、最近、WordPress5.xになった頃からかプラグインを使用した記事が「サイトに技術的な問題が発生しています。」となって表示されなくなりました。最近更新がないらしく、WordPressの最新バージョンでの検証はされてないぽいですね。
しばらく緊急待避的にプラグインを無効化して放置してたんですが、ちゃんと検証。設定で「Allow Mixed Language Highlighing with delimiters and tags.」と「Show Mixed Language Icon (+)」を無効化したら現象が収まりました。使ったことないですが、例えばHTML + PHPみたいな複数の言語指定を有効にするためのものですかね。ウチでは弊害もないので当面これでいこうと思います。

ANIME LOCKERのドロップ回避メモ

先日ANIME LOCKER機のチューナーカードを替え、システムを4系から6系にしたところ、なぜか地デジ録画のMP4ファイルが音ズレやブロックノイズでまくりに。BSは問題なし。以前は逆にBSの感度が低くてMP4変換が詰まることが多かったんですが、それは収まった模様(更新後一度も発生していない)。

MPEG2ファイルをのドロップ状況を調べて発生が確認できたので、受信環境の問題化と思いケーブルかえたりブースターを入れてみたものの改善せず。そもそも以前は同じケーブルまでの環境で問題なかったのでチューナー特性か個体差?と思って諦めてたんですが、ふとこちらの記事でエンコード負荷が高いとドロップするという指摘を拝見。

曰く、

  • エンコード(ffmpeg)の同時実行スレッド数を抑える
  • エンコードが実行される時間を録画が集中する時間からズラす

というアプローチ。とりあえず簡単に試せるのでトライ。たぶんシステムアップデートで上書きされて戻ってしまうのでとりあえずメモ。ちなみに本稿時点のシステムは6.1.4。

■エンコードのスレッド数を減らす

sshでログインして/home/foltia/perl/ipodtranscode.plを覗くと、確かに-threads 0というオプション指定をしてる箇所が多数見つかる。ffmpegの仕様を調べると0は自動でCPUのスレッド数の1.5倍で実行するらしい(どういう理屈??)。ということで、ウチはi5/4570Tで2コア4スレッドなので、とりあえず-threads 4にしてみる(上記記事と同じ)。場合によってはもっと減らしてみてもいいかも知れない。

■エンコード実行時間を制限する

ユーザfortiaがcronで定期実行しているのはこれだけ。

50 * * * * /home/foltia/perl/schedulecheck.pl >/dev/null 2>&1
25 5 * * * /home/foltia/perl/cron_foltia_dayly.sh >/dev/null 2>&1
25 4 * * 1 /home/foltia/perl/syobocalxml.pl 28 >/dev/null 2>&1
25 3 21 * * /home/foltia/perl/syobocalxml.pl 42 >/dev/null 2>&1
27 */5 * * * /home/foltia/perl/maintenancedb.pl LIGHT >/dev/null 2>&1

このうち、ipodtranscode.plを叩いているのはschedulecheck.plだけっぽい。ただし2番目の記事にあるrecwrap.plも録画実行スクリプトであるものの中でupodtranscode.plを呼んでるぽい。これがいつ呼ばれるかまでは追えていないですが、たぶん録画終了直後にこのブロックが実行されるんじゃないかと。ipodtranscode.pl自体は多重起動チェックをしているので、適当に呼んでも問題なさそう。なるほど、確かにschedulecheck.plとrecwrap.plからipodtranscode.pl呼び出しを押さえて、cronで任意のタイミングで実行するのは理に適ってそう。ウチの使い方ではそんなに即時エンコードは求めておらず、品質優先なので。
ということで有り難くパクらせていただき、schedulecheck.plとrecwrap.plの該当行(一箇所ずつ)をコメントアウト。

続いて、ユーザfoltiaのcrontabに

15 5 * * * /home/foltia/perl/ipodtranscode.pl >/dev/null 2>&1

などとして朝5時過ぎにトランスコード処理が走るようにしてみた。

しばらくこれで様子見。ダメそうならスレッド数を更に減らす。またバージョンアップがあった時はこれを見て変更が戻されてないかチェックすること。

2019.06.22追記:あんまし効果なかったぽくて結局チューナーを増設しました..

自閉モードになったRTX1210にログインするシリアルケーブル

久しぶりにYAMAHAルーターRTX1210をいじっていて、うっかりフィルター設定をミスって外部からログインできなくなってしまいました。外部メモリに設定をバックアップしてあれば一旦初期化をしてもよかったんですが最近それもしておらずどうしようもなくなったので、最後の手段でシリアルコンソールでのログインに初挑戦しました。

といってももはや我が家にあるノートPCはもちろんデスクトップ機にもシリアルポート(RS-232C)などついておらず、まずはケーブルを調達するところから。

RTX1210のシリアルポートはEthernetなどと同じRJ-45になります(前モデルのRTX1200はD-Sub 9ピン)。そこでまず注文したのはこれ。残念ながらUSB-Cのものは見つからず。

しかしお急ぎ便を使っても翌日。その日ネットが使えないのは不便なのでヨドバシ店頭で下記を揃えました。

まずはUSB-シリアル変換ケーブル。量販店で入手性が良いBUFFALOです。0.5mと1mがあり、そんなに長さは必要ないと0.5mをチョイス。

次にD-SubをRJ-45にする変換ケーブル。単純な配線レベルの変換のみですがマニアックな製品だけにYAMAHA純正のものなどは近隣に店舗在庫なし。しかしこちらもBUFFALOが同社のルーターメンテナンス用に発売しているものがありました。

どちらもWindows 10で自動的にドライバーが入り使用可能になり、TeraTermを使用してRTXにコンソールログインができました。安くて便利なUSB<->RJ-45直結タイプは店頭での入手性は微妙ですが安いのでRTXなどのルーターを使う人はあらかじめ1本もっておくと良いのではないでしょうか。