WordPressが原因不明に遅いのが解消(WPアソシエイトポストR2のキャッシュテーブル不具合?)

Pocket

ここのWordPressでページを開くのに十秒以上かかる現象がだいぶ前から発生していました。同じサーバー上の他のWordPressブログでは発生していないのでサーバー側の問題というよりこのWordPressブログ固有の問題だろう。ブラウザの開発ツールで「ネットワーク」のタイムラインをみても、最初のHTMLの読み込みに時間がかかっているぽく、画像とか外部スクリプト、Webフォントとかの問題ではなさげ。ということはWordPressでPHPを処理してレンダリングするまでの問題か?と思い、いくつかあやしいプラグインを無効化しても変わらず。というところまでは時折検証していたんですが、一応動いているしということで放置していました(すみません)。

で、別件でサーバーログを眺める機会があり、たまたま目に付いたのが以下のエラーでした。ブログページを読み込む度に発生しています。WarningではなくErrorなのでよろしくないヤツです。

AssociatesPostというのはAmazonや楽天のアフェリエイトリンクを生成するプラグインです。バリバリにお世話になっているので無効化は試していませんでした。

公式サイトをみると最終更新が2020.3ということで1年近く経っており、WordPressの互換性検証も「4.5以上」のままで「注意: このプラグインは現在使用中の WordPress バージョンではテストされていません。」という注意書きが出ています。もしかするとWordPress5.x系ででなにか問題が?と思いつつ、これだけメジャーなプラグインなら、ググればなにか出てくるくらい話題になってるだろうと。というか公式でもサポートが入るだろうと。

もう少しエラーを読んでみると、

というSQL文を実行しようとしてエラーになってるぽい。つまりある時期より古いキャッシュを全て削除しようとして問題になってる。そもそもそのキャッシュを管理しているテーブルwpxxxxx.wp_wpap_cache自体が存在しない??(wpxxxxxは伏せ字にしてますが、このWordPressサイト用のDB名です)。

とりあえず久しぶりに設定画面を開いてみると、キャッシュに絡みそうなのは即時全削除のボタンがあるくらい。試しに実行してみると案の定、同じサーバーエラーが記録されるだけで変化なし。その下に設定のエクスポート/インポートがあるので、一旦プラグイン自体を削除して、再インストールすればキャッシュテーブルが再作成されるかも?と思いつつ、その前に一旦「無効化」->「有効化」を試したところ、あっさり解消しました。エラーも出なくなり、ブログの表示もほぼ瞬間的に出るようになりました。有効化の時点でもテーブル作成が実行されたのかも知れません。

こんな簡単なことならもっと速くやっておけば良かった。見に来てくださる方にも長いことご迷惑おかけしてすみませんでした。

たいしたことはやってないですが、どなたかの参考になればと書き留めておきます。

 

BUFFALOのWXR-5950AX12を2台で中継システム組んでみた

Pocket

木造2F建ての新居で、いまいちWi-Fiが安定しませんでした。当初WXR-5950AX12を1台で足りるかな?と思ったものの2F設置で、1Fの片隅みたいなところにいくと2.4GHzすら届かず。次に以前使っていたNETGEARのOrbiを復活させてみるもやっぱり1Fのお風呂場やトイレで断続的に切れる。

すわ、OrbiのWi-Fi6対応版を買うか!?とも思いましたがお値段が高い割に10Gbpsポートが親機側1つしかなく、おいおい有線LANのマルチギガビットイーサ化を進めていく上で不足かなと。

ということでWANの10Gbpsポートが浮いてしまいもったいないなと思いつつ、もう一台WXR-5950AX12を買い足して中継を組んでみることにしました。

WXR-5950AX12は2020年9月末時点でBUFFALOでフラッグシップモデルとなる最高峰機種です(どこも品切れで入手に苦労しました)。中継機能を使うには同じWXR-5950AX12でなければならないようです(Wi-Fi6対応機なら使えるという書き込みもみましたが、現状公式の記載ではWXR-5950AX12同士というのが基本の模様)。

OrbiやOrbi 6を使った場合との違いとして、「バックホール専用のチャンネルがない」という点が挙げられます。WXR-5950AX12は2.4GHzと5GHzの無線装置をそれぞれ1つしか搭載していません。対してOrbiシリーズは5GHzを2つもっているトライバンド機となります。例えばAとBという2台で中継した時、バックホール専用チャンネルがないと、

端末 — (44ch)—中継端末—(44ch)—ルーター端末—インターネット

となります。端末と中継機、中継機とルーターが同じチャンネルを共用するので速度がでにくいのです。かたや5GHzだけで2つのチャンネルを同時にとばせるOrbiのような機種だと、

端末 — (44ch)—中継端末—(100ch)—ルーター端末—インターネット

のように違うチャンネルを使うので通信が重複せずに最大スピードが出ます。ということで、端末が5GHzを使って中継機に接続した場合に速度が出ない可能性がある、というのが違いになります。

とはいえ、有線部分、それもLAN側が10Gbpsという点はオンリーワン。例え1Gbpsの端末でも実効速度が上がるので、果たしてどちらがトータルでみて有利か、ということになります。最悪でも無線部含めて1Gbps超で使えるイーサネットコンバーターになるからいっか、ということで購入に踏み切りました(WXR-5950AX12が既に1台ある状況では、Orbi6を買うよりもう一台WXR-5950AX12を買う方が半額以下のコストだったこともあり)。

■結果

元々の構成としては、2Fの光ファイバー引き込み済みの部屋にルーターとして1台目を設置。v6プラスで上り下りとも300〜500Mbpsくらい出ています(Wi-Fi6端末で計測時。Wi-Fi5だと200Mbps台)。今回、階下である1Fで、部屋の位置としは真下に位置する辺りに中継機側を設置しました。

そして中継機側のWXR-5950AX12のLANポートに1Gbpsのスイッチをつなぎ、そこからPS4Proを接続して計測したのがこちら。

昼間ですが下りで376Mbpsでました。まずまずじゃないでしょうか。リビングのAVラック周りのレコーダーやゲーム機としては充分と言えます。

またいまいち途切れがちだった1Fのトイレやお風呂場でも安定した気がします。

■気になる点

中継機は公式の手順ではAOSSで親機にペアリングします。その後で中継機の管理ページにアクセスしようとするもLAN内にBUFFALO製品らしき端末が見当たらず。中継機のLANポートに有線でつないでもだめ。管理画面からファームウェアを更新したり設定を最適化したいのですが、いまのところIPアドレス/MACアドレスが見付かりません。Windowsでルーター検索ツールとかを使えばいいのかな?

またSSIDが2.4GHzと5GHzそれぞれに1(標準)、2(WPA3対応、3(WEP)と3つずつに加え、バンドステアリングに対応した共有SSIDが設定できます。計7つのSSIDが飛ばせるわけですが、2と3はOFFにできるものの1のチェックボックスがONのままグレーアウトしていて無効化できません。気持ち的にはバンドステアリングできる共有SSIDだけがとんでる状態がスッキリしてていいんですが、、また個別にステルスにすることもできなさそう。SSID1と共有SSIDを同じにしても2つとんでしまう模様(チャンネルは同一)。この場合、バンド固定かバンドステアリング対応のどちらのSSIDにつながったのかわからない状態となります。ここら辺、マニュアルを穴が空くくらい読んでみたもののわからず。以前はSSID1を無効にしてWPA3が使えるSSID2と共有SSIDという構成で使ってた気がするんですがなぜか再現できず。できないならできないでヘルプやツールチップに明記してくれれば余計に悩まなくて良いのですが。

そして1台目のレビューでも書きましたが、設定によっては再起動が必要にあんりゆうに2分くらいはネットが途切れるので、あれこれ試行錯誤するにもストレスです。一度設定がキマれば気になるところではないですが、導入初期はちょっとイライラします。

 

ともあれ最大の障害だった1F風呂トイレの電波状況が改善し、速度もそこそこでているのでOrbiを休眠させてしばらく様子を見てみようと思います。これでOrbiが処分できてWXR-5950AX12の2台目の購入費用の足しにでもできれば御の字かなと。

 

 

新居のプロバイダ検討 〜いまやフレッツでIPoEならどこでも一緒?

Pocket

近く引っ越すことになったのでプロバイダ検討。今はアパートに付帯の無料ネットサービスを使っているので、自分で選んで敷くのはン年ぶり。最新プロバイダ事情について勉強中です。ご意見歓迎いたします。

■前提条件

新居は戸建て木造賃貸で、既にフレッツ光の光ローゼットがエアコンダクトから引き込み済みでした。ということはフレッツ系の光ファイバーサービスは物理工事なしで利用可能であろうと想定しています。逆にNUROやauひかりの場合は別に引き込むところから始めなければなりません。というかどのみちauひかりはエリア外でした…

ということで、まずは速度的な優位性はなさそうですがフレッツ系(コラボ含む)を使ってみて、不満ならNUROも検討という考えでいます。

あとひかり電話は契約しない予定。

■v6プラスかDS-Liteか

現在のフレッツはIPv6(IPoE)化を抜きで語ることはできません。従来のPPPoEによるIPv4はプロバイダ設備の限界で速度が全く出ないからです。IPoEオプションでIPv6通信を可能にした上で、v6プラスまたはDS-Liteという方式でIPv4 over IPv6接続を可能にし、全パケットがIPoEを経由しPPPoE経路を通らない設定にする必要があります(ちなみにNUROやフレッツクロスは最初からすべてIPoEのようです)。

IPv6オプションは私が契約してた頃は有料オプションでしたが、2020年現在多くのプロバイダが無料提供しています。コラボ系だと対応ルーターをレンタルするのに500円/月くらいかかるところもあったりしますが、ウチはすでに対応ルーターをもっているので大丈夫。

問題はIPv4 over IPv6のサービスとしてv6プラスかDS-Liteのどちらをとるかです。これらのサービスを提供するのはNTTでもプロバイダでもなく、日本ネットワークイネイブラー(v6プラス)やインターネットマルチフィード(DS-Lite)といった事業者で、プロバイダがそのどちらかと契約して提供しているという理解です。もちろん物理回線としてはNTTのフレッツ地域網を使うわけですが。なので、私の理解としては同じv6プラスならv6プラスを使うプロバイダ同士で通信速度に差はないんじゃないかと(各プロバイダのPPPoEゲートウェイを利用しない為)。もちろんもしかするとプロバイダ毎に契約容量みたいなものがあって帯域制限がかかったりはしてるのかも知れませんが。その辺、速度ベンチランキングとかみてても、はたしてIPoE契約してるのか、計測サイトはIPv4/6どっちか、Wi-Fiか有線かなどがはっきりせず、個別の計測値を参考にしていいのかもわからない状態なので、観察的事実としては確定が難しい状態です。どなたかご存じでしたら是非教えてください。

ということで、現時点ではとりあえずv6プラスかDS-Liteかという二択で考えています。DS-Liteは以前にIIJmioで利用したことがあり、速度向上は確かに感じられました。当時はいまほどv6プラスを採用しているプロバイダはなかったような。最近ではむしろv6プラス優位な感じがしてきてますかね。両者は速度面以外にも機能面で違いがあります。それはポート開放に関するもの。DS-Liteはポート開放が一切できません。v6プラスはポート番号こそ選べないものの240個のポートが固定的に割り当てられるので、IPアドレスさえ固定するかDDNSでホスト名をふってしまえば、サーバー運用も不可能ではありません。ポート番号付きのURLは一般的ではないので一般公開用サーバーとしては使いづらいですが、私用でアクセスするには問題ありません。私も今は公開サーバーはクラウド化しているので、自宅のNASとかちょっとした個人Webアプリにさえ到達できれば充分です。なので、ないよりはあった方がいいかなというレベルでv6プラスに気持ちが傾いているところです。

■PPPoEは併用できないのか?

多少遅くとも、サーバー公開用にはIPアドレスが1つ独占でき80や443といったメジャーポートが使えるPPPoEも使えればイイジャナイと思いますが、どうもネット上の記事をみていると、v6プラスが有効化されるとPPPoEが自動で無効化されるっぽいです。通常の用途ではv4のゲートウェイが2つあっても混乱を招くだけなので、自動で無効化されるのは正しいと思いますが、わかってる人がYAMAHAルーターなどを駆使してデュアルルート運用することが可能なのかまでははっきりしません。ルーター機能としてOFFになるだけなのか、PPPoEのID/PWまでサーバー側で無効化されるのか。

ただおそらくですが、フレッツのマルチセッション機能までは殺されないと思うので、最悪まったく別のプロバイダを契約すて自前でPPPoE接続すればいいんじゃないかなと予想はしています。v6プラスのポート開放が意図通りに使えなかったら安くてグローバルIPがもらえるプロバイダを追加契約かな、と。GMOとくとくBBInterLinkあたりなら1,000円強で固定IPアドレスもとれるようです。

動的グローバルIPでもいいのでPPPoEセッションも維持してつかえれば理想。ダメなら固定IPのプロバイダをサブで契約、という感じかな?

■フレッツ光クロスも見据えて

そうこうしているうちにフレッツの10Gbpsサービスであるフレッツ光クロスも神奈川にサービスインしてくれないかなという期待も。現時点でクロスに対応しているプロバイダにしておけば、移行もスムーズなんじゃないかなという淡い期待。

2020.8.25:祝開通!結局こういう構成にしました

色々調べると、v6プラスでも帯域制限があるという話。プロバイダとJPNEの契約も従量、あるいは一定量を超えるとペナルティみたいなのがあるんでしょうかね?@niftyとかヒドいと聞きます。ということで現時点でv6プラスの帯域制限がないらしい某プロバイダにしました(利用者増えてほしくないので伏せときますw)。ここはv6プラス専用(PPPoEなし)プランが2千円くらい、v6プラスでの固定IPアドレス1つが5千円くらいです。悩みましたがとりあえず固定無しにしました。本当に速いか様子を見てからでいいかなと。またあまり速度を必要としないので、PPPoEでもっと安い固定IPプロバイダを契約してもいいかなと。でルーターのPPPoEパススルー機能でRTX1210をぶらさげてやろうかと。

現在、RTX1210を旧宅で使っているせいもありますが、一旦新居はBUFFALOのWi-Fi6 & 10Gbpsイーサ対応のWXR-5950AX12(以下AX12)で設定しています。v6プラスをプロバイダ側で設定してくれ、ルーター側操作としてはPPPoEのようにID/PWを入れる必要もなくとても簡単ですね。プロバイダ側にとっても問い合わせが減って地味にコスト削減になる部分じゃないでしょうか。

で、AX12はWANポートにもLANポートにも10Gbps対応ポートがあります。将来的にフレッツクロスやNUROに切り替えても規格的にボトルネックになることはありません。逆に業務用の高価なRTX1210は1Gbps止まりなので、いずれクロス/NUROが来たら使うのは躊躇われます。

ヤマハ ギガアクセスVPNルーター RTX1210

ヤマハ ギガアクセスVPNルーター RTX1210

88,050円(04/14 03:02時点)
Amazonの情報を掲載しています

まぁ現時点ではMAXも1Gbpsなので気にしてもしかたないんですが、当面メインルーターをAX12にしておいて、PPPoEパススルーで固定IPプロバイダを使うのがいいかなと。固定IPだとより綿密にフィルター設定、VPN設定などが必要になりますし実効で1Gbps出ることはないのでRTX1210の性能で不足することはないでしょう。こちらは完全に引っ越してRTX1210が空いてからじっくり検討します。

さてドコモ光+某v6プラス対応プロバイダですが、横浜市、平日夜9時頃の計測でこんな感じでした。

千代田区に住んでた頃には届かないですが、まずまずですね。この速度が終日維持できれば御の字です。ちなみにNTTの網内速度は下り300、上り400Mbps程度でした。インターネット速度より遅いってどういうことなんでしょうね。サーバーが弱い/混んでる?

 

ともあれなんとか開通にこぎつけました。ドコモ光のキャッシュバックもらい忘れないようにしないと(笑)。追々、サーバーを移設した後、ポート開放などを試していきたいと思います。

2020.08.28追記:別の日、荷物到着待ちで暇なのでいくつか条件をかえて再計測してみました。平日(金曜)午後2時頃。

Surface Pro X 有線LAN

Surface Pro X Wi-Fi 5

Surface Go2 有線LAN

Surface Go2 Wi-Fi6

ざっと見比べる限り、

  • インターネットの下りMaxが300Mbps強、上りは600Mbps台くらい
  • 下りはWi-Fi5でもネックにはならなそげ
  • ただGo2有線の遅さから、PCパワーがネックになってる可能性も残る

という感じでしょうか。またマルチギガビットイーサ対応機種を移設したら検証してみます。

2020.09.15追記:検証しました。2.5Gbpsイーサネットのデスクトップ機での検証です。深夜帯ではありますが下り600Mbps、上り700Mbpsが出ました!

他の時間帯でも目に見えて速度が落ちる感じはないです。計測すれば500Mbpsは出てるかと。ワーストでも300Mbps切ってるのは見てない気がします。逆に言うとLAN内の通信が足を引っ張るレベルなので、Wi-Fi6やマルチギガビットイーサ前提でないとWAN周りをNUROや光クロスにしても恩恵は薄いかなという気がします。

Wi-Fi6メディアコンバーターで隣室のプリンタを高速化

Pocket

我が家のWi-Fiアクセスポイント(親機)から最も離れた部屋にカラーレーザープリンターCanon 612cがあるんですが、こいつの内蔵Wi-Fiは2.4GHzにしか対応しておらず、重たいカラー印刷にやや難がありました。有線LANを通すのは難しかったので使わなくなったASUSの5GHz(11ac=Wi-Fi5)対応のWi-Fiアクセスポイントをブリッジ(メディアコンバーター)として使ってたんですが、親機側をWi-Fi6化したのを機にこちらもWi-Fi6化してみることにしました。

しかし、現状Wi-Fi6対応の純粋なメディアコンバーターは見つからない。Wi-Fi6になる以前から単機能のメディアコンバーターは絶滅しかけており、ルーターや中継器でモードの1つとしてある程度でしたが、まだ少ないWi-Fi6ではさらに選択肢が限られる感じです。

なるべくコンパクトで安価なものがいいと思って探した結果選んだのがこちら。

中継器ですが、製品ページに「ブリッジモード」と明記されています。有線LANポートは1Gbpsイーサネットが1ポート。過不足なく今回の用途にマッチする感じです。必要になったらハブを追加すればヨシ。

Wi-Fi6といっても5GHzで1,200Mbpsまでの対応です。速度の理論値だけでいえばWi-Fi5でも1,733Mbpsモデルがありました。

実際にどちらの方が実効スピードが上かは不明ですが、Wi-Fi6の安定性や電波干渉への耐性、端末数が増えた時の混雑回避性能などを期待してRE505X(上)にしました。

■余計な中継電波をとばさない

今回気にしたのは、子機に徹して余計な中継電波を飛ばさないようにできるか、です。本件の用途としては、既存の5GHzネットワークに参加し、有線LANとブリッジすることで、本機に新たに2.4GHz/5GHzの中継ネットワークを発生させることは望んでいません。実際にデバイスをつなげてパケットをやりとししなければ、ビーコンだけでたいして電波環境の悪化は引き起こさないとは思いますが、Wi-Fiのリストに余計なものが飛んでいるのは気分よくないし、セキュリティ的にもよろしくありません。

本機はあれこれ試行錯誤してどうにもつながらなくなる、といったトラブルで何度か初期化からやり直した結果、

  • 2.4GHzの電波は一切発しない
  • 5GHzの拡張ネットワーク用のSSIDは親ネットワークと同じチャンネルで飛ぶ。ただしステルスにはできる

という形に落ち着きました。チャンネルが少なくご近所の電波も通りやすい2.4GHz帯に一切影響しないのはマルです。5GHzは例えば親ネットワークabcdに100chでぶらさがった場合、強制的にabcd_EXTみたいなSSIDで拡張ネットワークを作成してしまいます。しかも親と同じ100chで。チャンネルを変えたりOFFにはできない模様。「有効」チェックボックスがONのままグレーアウトしています。SSIDは変更可能なので、親ネットワークと同じにすれば中継としては自然ですが、他の端末が親ネットワークにも十分届くのに、わざわざ中継器につながってそれ経由で通信するのもなんだか速度低下しそうでイヤです。結局、あえてabcd_EXTのような別ネットワークのままにして、ステルスをONにしておきました。これなら各種デバイスのネットワーク一覧には出てこないので実質ほぼ存在しないのと同じです。

■その他特徴

ハードウェア的にはコンセント直付けタイプですが、筐体は割と大きいので本当に壁コンセントにつけると結構邪魔です。他の口をつぶしてしまうことも。結局、延長タップを介して邪魔にならない場所に設置しました。小型な3口でマグネットがついたものをチョイスし、たまたま近くにあった金属壁面に貼り付け。

仮に壁面設置しなかった場合でも、本機はアンテナの向きが変えられるので最適化がしやすいでしょう(中継器はアンテナ内蔵品が多いイメージ)。

TP-Linkは初だった気がするんですが、面白かったのは管理画面へのログインにTP-Linkアカウントを使う点でしょうか。メールアドレスが必要で面倒といえば面倒ですが、ありがちなrootとかadminとか使うよりはセキュリティ面では安心なのかも知れません。その他の管理UIの使い勝手はまぁ普通。レスポンスは良いしデザインもスッキリしてます。

機能面では、時間による定期OFF(試してないけどOFFのみな気がする)、電波強度は3段階、MACアドレス制限など。またTP-Linkルーターと組み合わせるとOne Meshという独自メッシュネットワークを構築することも可能。7千円で買えるメッシュ子機と考えるとなかなかのコスパだと思います。

 

ともあれ安価ながら今回の利用目的には十分な製品でした。

ATEM Mini ProからAmazon Interactive Video Serviceに配信してみた

Pocket

AmazonのクラウドサービスAWSの新サービスとして、簡単に自サイトでライブ配信を行うAmazon Interactive Video Service(以下IVS)をリリースしました。

従来、自社サイトにライブ動画を貼り付け用とすると、

  1. Youtube LiveやTwitchなどの配信サービスを使い、リンクを自社サイトに貼る
  2. 自営サーバーを建てる

といった選択肢が主流でした。前者はお手軽ですが、プライベートな配信にはやや難があります。一応パスワードがかけられたりもしますが、やっぱり業務用となんかだと公開配信サービスを通すことが難しかったりします。他方、自営サーバーも最近ではより簡単に構築できるようにはなってきているものの、基本的なWebサーバー運用の知識は必要ですし、エンコード性能がそれなりにあって、視聴者が多い場合は上り帯域が太いサーバーが必要だったりします。

IVSを使うと、OBS Studio、ATEM Mini Pro、LiveShellシリーズのようなRTMP送信できる配信機材から簡単にアップロードでき、また様々なプラットフォーム、回線速度に応じたトランスコードや配信側も丸投げできます。自社サイトには極簡単なHTMLを貼り付けるだけで済みます。HTMLに各種アクセス制限をかければプライベートな用途にも使えるんじゃないでしょうか。配信時間、視聴者数、解像度に応じて利用料金がかかりますが、上記記事の概算などをみても、小規模な配信であれば気にするような額にはならなそうです。

■ATEM Mini Proからの配信をしてみる

2021.03.08追記:コメントいただいて気付いたのですが、現在AWSのTLS 1.1未満廃止の影響でATEM Mini ProからAmazon IVSへの配信は利用できなくなっているようです(ATEM Mini Pro側がファームウェア8.6現在TLS 1.2に非対応なため)。公式サポートに連絡したところ問題は把握しており協議中どの返信がありました。対応を期待するしかなさそうです。

とりあえず映像と音をが出るところまでテストしてみたので手順をまとめてみます。AWSのアカウントは既にもっている前提で進めます。利用に応じて料金がかかりますので自己責任でお願いします。

・IVSでチャンネルを作成

IVSのトップへ行き「チャネルの作成」をクリック。以下のような画面が出るので、「チャネル名」を指定し、「チャネル設定」はとりあえず「デフォルト設定」にしておきます。チャネル名は視聴者に見えるものではなく、IVS上で自分で区別をするためのものと思って良いでしょう。

チャネル作成画面

・配信情報を確認する

作成後はこんな画面になります。「ライブストリーム」(=プレビュー画面)はまだ不要なので畳んであります。この画面で重要なのは、

  1. 取り込みサーバー
  2. ストリームキー
  3. 再生URL

の3つの情報です。それぞれ先頭のコピーアイコンからクリップボードにコピーできるので必要になったらそこから取得します。

チャンネル情報

・ATEM Mini Proに設定を追加する

ATEM Mini Proの配信サーバーはデフォルトではFacebook/Twitch/Youtubeの3つしか選べませんが、設定ファイルをテキストエディタで書き換えることでカスタムサーバーを追加することができます。

方法としては、

  • ファイル->別名で保存から「出力」の「設定」のみチェックして書き出したXMLを編集し、それを「復元」で読み込む
  • デフォルトのサーバー設定ファイルを書き換える

の2つがあります。前者はサーバー設定のみを独立して保存できますが、ATEM Mini Proの電源を入れる度に再読込させなければなりません。後者は自動で読み込まれますが、おそらくATEM Software Controlをアップデートすると初期化されてしまう気がします。毎回読み込ませるのは面倒なので、ここでは後者の手順をとってみます。

設定ファイルのパスは、

になります。<service>~</service>ではさまれた設定がFacebook/Twitch/Youtbeと3組あると思うので、最後のYoutubeの<service>~</service>間を複製し、以下を書き換えます。

  • サーバー名を示す<name></name>タグを適当な名前に書き換える。ここでは「Amazon IVS」。
  • <servers>タグの中にPrimaryとSecondaryの2つのサーバー指定があるので、Secondaryの方を削除する(<server>~</server>)
  • Primaryサーバーの<url></url>タグ内にIVSコンソールから「取り込みサーバー」をコピペする
  • 直下に<key></key>タグを追加し、IVSコンソールから「ストリームキー」をコピペする

以上です。<profiles>以下にビットレート指定が何パターンかありますが、とりあえずそのままで良いでしょう。こんな感じになります。なお、上書き保存には管理者権限が必要になります。

ATEM Software Controlを起動すると右上の「出力」タブの「ライブ配信」「配信サービス」のところに追加したサーバー名が選択可能になっており、「サーバー」は1つだけのPrimaryが選択され、「キー」にストリームキーが入り、「品質」がStreaming Highになっているはずです(画像はオンエア状態)。

追加したサーバーが選択された状態

ここまでくれば後はATEM Software Controlか本体の「ON AIR」ボタンを押すだけで配信が始まるはずです。「ON AIR」の赤文字が光ればOK。点滅する場合はネットワーク帯域が足りないなど問題がある状態のようです。ウチの状態では、なぜか一度切断すると再度ON AIR状態にならず点灯と点滅を交互に繰り返す状態になりました。ATEM Mini Proの電源を入れ直すとつながりますが若干不安定ですね。一瞬ON AIRになった気がして放置していると実はつながってない、なんてこともあり得るので困りものです。

「ON AIR」が安定して赤点灯になるようなら、もういちどIVSコンソール画面に戻り「ライブストリーム」ブロックを展開表示してみましょう。左下の「ステータス」が「LIVE」になって映像が見えていれば成功です!

・Webページに挿入する

再生URLは拡張子がm3u8で、例えばVLCなどで「ファイル」「ネットワークストリームを開く」にURLをコピペすれば視聴できます。ただそれだと不便だし画質もあまりよくないようです。簡単にブラウザでWebページを開いて視聴可能なようにしてみましょう。

SDK for WebのページにあるSample Codeをコピーして自サイトにHTMLファイルとして保存し、以下を修正します。

  • 1行目のscriptタグのsrc属性内のパスで「VERSION_NUMBER」となっている部分を「1.0.0」に書き換える(執筆時点)
  • 8行目の「PLAYBACK_URL」をIVSコンソールの再生URLに置き換える。

基本的にはたったこれだけでOKです。スタイルシートもなにもないので極シンプルですが、ライブ中であれば映像が映るはずです。ライブが開始されてないと真っ白な画面になります。おそらく回線速度に応じた解像度でドットバイドットで表示されるんだと思います。固定したい場合はスタイルシートなどで指定すれば良いでしょう。コンソールのプレビューのような画質やサイズ、音量を指定するUIもありません。そういう凝ったことをしたい場合は、こちらを参考にVideo.jsを使えば良さそうですがまだ試していません。

ここまでざっと30分もあれば設定可能でした。良い時代になったものですね。OBS StudioやLiveShellなどを使う場合も、基本的には同じで「取り込みサーバー」「ストリームキー」を然るべき設定項目にコピペすればいけるんじゃないでしょうか。

■セキュアな配信が可能なのか?

これでプライベートな配信をしようとした場合、どんな手があるかですが、すぐ思いつくのはWebページに対してのアクセス制限です。BASIC認証をかけるとか、アクセス元をIPアドレスで制限するとか、ブラウザをクライアント証明書で絞る、とかですね。ただ一度アクセスできた状態でHTMLソースをみると、再生URL(m3u8)は丸見えです。これを視聴者が勝手に共有してしまうとアウトな気がします(先に書いたように再生URL単体をVLCなどで開いて再生は可能)。再生URL自体にアクセス制限をかける方法はざっと見た限りではなさそうでした。まぁそれいったらYoutube Liveで配信パスワードを漏洩されたら同じですかね。

アクセス制限を厳密にかつ簡単にしやすいのはFacebook Liveとかでしょうか。フレンド限定とか、グループで流すとか。ただあんまり画質は良くない印象です(きちんと調べてないですが)。

クラウドアレルギーな人がいる案件で使いやすいかというと、結局AWSというクラウドサービスは使っていることにはなりますので、なんともですかねー。

 

■まとめ

ともあれ、比較的簡単に配信環境が実装できることがわかりました。既存配信サービスとどう使い分けるかは案件次第になりそうですが、選択肢として割と有望そうな気がします。