半自動化してみました

前々からやろうやろうとは思っていたのですが、ちょっと触ってみたら何とかできました。

 

今までの手作業

一応準備段階として

OBS Studio、Chrome(ふわっち配信画面表示)、ふわっちコメントビューア、Firefox(雑談たぬき表示)、Opera(ツイキャス、アフリカTVログイン)

の起動して待機状態にしてあります。
(待機状態でもOBSやFirefoxのアドオンでCPU使用率が高いからなのかノーパソのファンが五月蠅いので全部落としておく時もあります)

待機状態からだと次の手順をしていました。

 

対象の配信が開始

『Chrome』にて「ふわっち」の配信画面表示(前配信の後ならF5、ユーザページからだと赤いラベルクリック)

『Chrome』のURLアドレス欄をマウスカーソルで選択

「Ctrl+C」でクリップボードにコピー

『ふわっちコメントビューア』の「放送URLor配信者ID」入力欄をマウスカーソルで選択

「Ctrl+A」で前の配信のURLを全選択

「Ctrl+D」で削除

「Ctrl+V」でクリップボードにコピーした新しい配信のURLをペースト

「接続」をクリック。『ふわっちコメントビューア』でコメント表示開始。

『OBS Studio』の「配信開始」をクリック

と、まぁこんな感じです。

で、今回のキモは「ふわっち」で次枠移動があった場合、これを30分ごとに『OBS Studio』の部分以外全部繰り返さなければなかなかったということです。
(なんでふわっちで延長してくれると楽でした^^;)

 

「ふわっち」の配信を見られている方ならお分かりだと思いますが、「ふわっち」は次枠へ行くのに大変手間で、「ツイキャス」のように配信画面を開いていれば勝手に次枠が見れる仕様ではありません。
(だからこそ延長した方がリスナーが残ってくれるからと50円かける配信者がいて、ふわっち運営にしたら美味しいポイント回収になるわけですが…)

 

そんなわけで今回はこの30分毎の手間を自動化しようと取り組んでみたというわけです。

 

 

自動化

いろいろあったのですが、何とか「ふわっち」で配信開始するとURLを引数に任意のプログラムにブン投げることができるようになったので、ここまで漕ぎ着けました。

 

で、その結果できたのが、if分岐もへったくれも無いクソみたいなバッチファイルです。

 

・Auto.bat

“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” %1
echo %1 | clip
UWSC.exe ams.UMS

 

たった3行…

説明しましょう。

 

まず1行目。

“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” %1

これは「Auto.bat」を実行する時に引数が渡されるのですが、その値が「%1」になります。
引数は9個ぐらい設定できるみたいです。(うろ覚えですが^^;)
バッチファイルを実行する時「Auto.bat (引数1) (引数2)…」というようにスペースで区切った感じで渡され、%1(引数1) %2(引数2)…でバッチファイル内で呼び出して使うことができる…ということですね。

実際引数1にはふわっちのURLである「https://whowatch.tv/viewer/(配信ID)」が入っているので、1行目でやっていることは

ブラウザ「chrome」で「ふわっち」の配信画面を開け

ということです。

 

 

2行目。

echo %1 | clip

これはクリップボードに引数1の内容をコピーしている感じです。
バッチファイルやコマンドラインでは「Ctrl+C」とかできませんから、windows7以降で「C:\Windows\System32\clip.exe」というのができたっぽいですね。

これは次への布石という意味合いが強いので後で述べましょう。

 

3行目

UWSC.exe ams.UMS

フリーソフト「UWSC」を呼び出す部分です。
まず「UWSC」の説明からしなければなりませんが、ざっくりいうと

マウス操作やキーボードの操作を記憶して、保存。呼び出して実行できる。

という、すっごいソフトです。

なんというかもう操作の自動化界で言ったらチートです。

で、マウス操作やキーボード操作を記憶して保存した時にできるのが、拡張子が「.UMS」のファイルで。
ここでは事前にやった作業を「ams.UMS」に保存して、バッチファイル3行目で呼び出している…という感じです。

では、「ams.UMS」に何の操作を記憶してあるか…なんですが。

  1. 「ふわっちコメントビューア」の「放送URL&配信者ID」欄をマウスで選択
  2. 「ctrl+a」で全選択
  3. 「ctrl+d」で削除
  4. 「ctrl+v」でクリップボードにコピーしてあるURLをペースト
  5. 「接続」をマウスでクリック

という手順を記憶してあります。

ここでバッチファイル2行目の話に戻るわけですが、UWSC.exeであればchromeのアドレス部分をいちいち選択してURLをコピーすることもできるわけですが、それを省きたかった…というだけです。

むやみにマウスの操作記憶に頼って、例えば画面がずれたときに意図した動作にならない…とかなるよりは、コマンドラインで済ませた方が信頼性高いですしね。

 

なんとか…

というわけで、半自動化できたわけですが、これで楽ちん度が劇的に変わりましたね。

出来れば全自動化して、「24時間365日全自動対応配信」を実現したいところですがUWSCでOBS Studioを操作できるとして、終了を判断するロジックがなぁ…

最悪コメントサーバに接続して「配信が終了しました」を検知する感じにするか、それとも31分後あたりまで待ってる終了監視の子バッチプログラム組んで新しい配信が始まってないか見させるか…
あ、でもそれだと延長された時ダメか…うーん、キツイっすなぁ…

課題は山積です。^^;

 

あ、そうだ。
Special Thanksですがツイキャスで配信始めたばかりの時フリーソフト「UWSC」を教えてくれた人(「かずんくん」さんだったかな…?^^;)。
本当に感謝です。助かりました。m(_ _)m

ツイキャス配信やOBS Studioで出た不具合

私がツイキャスで配信したりOBS Studioを使って配信した際に出た障害みたいなもの。

ネットで対応策調べて解決したものは解決策を記述。

 

ツイキャス配信時、視聴者側ですぐにBufferが0になってブツブツ切れる

ツイキャスで初期に発生していた不具合ですね。まだOBSを使う前のことです。

初めはまだ「ツール配信」もできず、音声だけのラジオ配信でたいして通信量も多くないだろうしなんでこんなことが起こるのか不思議でした。

対応策:ツイキャスの配信画面の下の方にある「高度な設定を開く..」をクリックして開いた画面の「回線速度 」の項目を「ブロードバンド」から「モバイル」に変える。

 

これは推測になりますが、おそらく設定を変更したところにあるように
目安: モバイル <500kbps, ブロードバンド >1Mbps
というのが、ラジオ配信だからデータ量が少ないとかでなくそのまま効いてくるのだと思います。

よく見てみると「ミュート」ボタンの横の「ラジオ配信」ボタンで、「Webカメラでの配信」と固定画像で音声だけの「ラジオ配信」をワンタッチで即座に切り替えられるのですが、ここが引っかかるところで…

つまりこうも一瞬で切り替えられるということは「Webカメラでの配信」で使っている帯域の設定はそのまま「ラジオ配信」でも引き継がれていて、「回線速度」の設定を「ブロードバンド」にしていた場合音声だけの配信でも1Mbpsに匹敵するデータ量が流れることを想定されているのではないか…と。

で、ツイキャス側では1Mbpsでデータが来るものだと思っているにも関わらず、送信元からは(ダメダメ回線の為)1Mbps未満しかデータが送られてこないので、貯めてあったbufferはすぐ空になり新たなデータがbufferに貯まるまでは視聴できない…それが数十秒ごとに繰り返される…

という状況だったのではないかな?^^;

 

現在は「高画質配信」or「ツール配信」ができるようになり、流れるデータ量はOBS Studio側の方で設定出来るため(映像200kbps+音声96kbpsをアフリカTVとツイキャス同時で配信296×2=592kbps)、上記のような通信がブチブチ切れる…なんて症状はでなくなりました。

めでたしめでたし。

 

 

音声が山彦のようになる(遅延した音声がのる)

テスト配信時に気づいたのでよかったですが、ネットで対応策検索できない人は躓きそう…

対応策:OBS Studioの「デスクトップ音声」の「設定(歯車)」から「プロパティ」を開き、「デバイスのタイムスタンプを使用」のチェックを外す。

 

ネットで参考にさせてもらったページはこちら。↓

一部環境下で発生するOBS Studio「デスクトップ音声」がズレる(遅延/遅れる)現象
Clara Style OBS Studioの分かりづらい設定紹介)
http://ch.nicovideo.jp/kenta0644/blomaga/ar646845

 

 

OBS Studio 起動する度に音量が下がる

これは配信始めてから気づいて毎回右下のタスクトレイから「音量ミキサー」を呼び出してボリュームあげなおしてました。^^;

ネットで調べたら簡単に対策できることがわかって嬉しさの反面「今までの苦労は…」と思いました。

対応策:windows画面右下「タスクトレイ」 から 「音量調整(スピーカー) 」を右クリック、「 サウンド」を開く。「通信」のタブを選択し、「他のすべてのサウンドの音声を80%下げる」とかになってるのを「何もしない」にする。

本来はSkypeとかで通話する時に自動的にデスクトップとかで流してるBGMの音量を自動的に下げてくれる機能なのですが、何故かOBS Studioの起動をトリガーに発生してしまうようで…なんでだろ?

 

参考にさせてもらったサイトはこちら↓

◆OBS Studio起動後にシステム音量(デスクトップ音声)が下がる(小さくなる)現象
(Clara Style OBS Studio 自分用ニコ生設定メモ(Win))
http://ch.nicovideo.jp/kenta0644/blomaga/ar1030770

 

 

回線断後のツイキャスでの配信復活方法

アフリカTVではOBS Studioでそのまま配信状態であれば再接続してそのまま視聴してるブラウザ更新すれば見れるのに、ツイキャスでは再接続もしてくれないしOBSで「配信終了」からの復帰も微妙で困っていました。

結局明確な対応策は見つかっておらず、安定した光回線が導入されるまではとりあえず付け焼刃的な対応になってしまいますが…

 

とりあえずの対応策:OBS Studioで「配信終了」→「配信停止処理中…」の表示になる→「配信開始」の表示になるまでじっと待つ→「配信開始」をクリック…

 

 

尚、TwitCastingの公式ページにこんな記述がありました。

配信ツールの自動再接続機能について

配信が一度終了した後、意図せず配信が再開されるなどの事態を防ぐため、再度配信をするには一定以上の間隔をおく必要があります。
配信終了後、再度配信をしようとして失敗してしまった場合は、配信ツールの接続をいったん切断し、数十秒程度の時間をおいてから再び試してみてください。
また、自動再接続の機能をオフにしてご利用ください。 自動再接続機能の詳しい設定方法については、各配信ツールのヘルプ等をご覧ください。

PCで外部ツール配信をするには
http://twitcasting.tv/indexannounce.php?title=ANNOUNCE_JA_HELP_GAME_TOOL

 

こういうことも書いてあったのでOBS Studioの「設定」の「詳細設定」の中にある「自動的に再接続」の「有効にする」のチェックは外しておいた方が無難かもしれません。

最終的には自動ミラーリングシステムを構築・移行したい

せっかくPCでやれることなのだから、自動化したら楽だなぁ…と思うのは人の常ですね。

ということで、「自動ミラーリングシステム」の考察です。

 

ラストには「元配信検知」→「配信開始」→「元配信終了」→「配信終了」という一連の流れを全部オートでやらせるようにしたいですが、まずは「元配信検知」から行きたいと思います。

 

元配信検知

一番のキモですね。全てのアクションのトリガーとなる部分です。

おそらくこの部分さえできれば、8割がた完成と言っても過言では無いでしょう。

それだけ手探り状態なわけですが…

「ふわっち」の方でアラートツール作成用にAPIみたいなものを公開していれば楽なんでしょうけど、そういうの無さそうだし。^ー^;

 

とりあえず、わかっていることを箇条書きに書いていきますか…

  1. 配信者が配信開始時に通知がいくように設定しているとスマフォアプリに配信開始の通知が届く。
  2. 配信するとふわっちサイトの「オススメ」の「人気順」や「新着順」に表示される。
  3. ユーザのプロフィールサイト(https://whowatch.tv/profile/<ユーザID>)の画像の下の方に赤く『LINE配信中「放送タイトル」>』と表示される。その文字をクリックで配信中の枠を開く。
  4. 前枠の画面を開いている状態で更新を押すと、自動的に次枠にいく。

こんな感じでしょうか。

 

さて、そこからトリガーを検出して形にする時の流れと難易度を考えましょう。

  1. スマフォアプリがふわっちサーバとどんな通信をしているか解析が必要。→皆目見当つかず。
  2. トップ画面のHTMLを読み込ませて検索してヒットしたらできそうだが、オススメ規制やユーザ名を変えられたりすることを考えると面倒くさそう。
  3. おそらく赤文字を表示している部分はAdobe Flashを使った部分だと思われる。→どこから手をつけたらいいか見当つかず。
  4. 定期的に前枠のURLで更新をかけて、「その配信は終了しています。(L-004)→定期更新継続」。「新しい配信の画面に飛んだらOK→各種プログラム実行」でいけそう。

 

というわけで1番簡単で実現可能そうなのが4ですかねぇ。

 

うーん、これプログラムでどうやったらできんの?^^;

 

以上、考察でした。

雑談たぬき用のFirefoxの画面

実は初期の時点では結構表示に納得がいかないところがあった。
そこから現在の状況になるまでの経緯を書く。

 

初動

Firefoxで雑談たぬきを表示。

アドオン「NoScript」でJavaScriptを停止。エロい広告が表示されないようにする。

書き込みがあれば反映するようにタブ自動更新アドオン「Tab Auto Reload」を入れる。

OBSで取り込む画面の都合上空きが無いので、アドオン「ツリー型タブ」でウィンドウサイズを小さくして雑談たぬきの表示領域を最大限に確保。

ここで、一時的にOBSの取り込み画面にいれて表示するも、どうも自動でタブ更新するたびに雑談たぬきに書き込まれる文字の量により、若干表示位置がずれる。

 

更新時の表示位置ズレ

どうやら更新した際に表示する位置がそんなガッチリ決まっているわけではなくて、だいたいここら辺?って感じで飛んでいるようだった。

できれば最新のコメがちゃんとカッチリ一番下に表示されて欲しかったので、いろいろ考えた。

その結果
今まで画面サイズを小さくしてなんとか画面内の領域に収まるようにしていた

縦長にして雑談たぬきの一番下にあるコメント欄も表示

コメント欄は画面外に出して、OBSで取り込む部分はコメント欄より上に設定

これで更新時に下の端が固定された為、ズレることはなくなった…と思ったら、新規スレが立った時コメ数が少ないとなぜか更新するとズレる…

 

新規スレ、コメント少の時の表示位置ズレ

困ったのでブラウザの表示の一番下に自動でスクロールしてくれるアドオンを探していれてみた。

アドオン「ScrollyFox」をいれて自動で下にスクロールさせようとするも、「ScrollyFox」が表示されず。

アドオン「ScrollyFox」を使うには、ステータスバーが必要で、ステータスバーは廃止され最近のFirefoxでは表示されない。

最近のFirefoxでもステータスバーを表示するアドオン「Status-4-Ever」を入れる。

「Tab Auto Reload」で5秒毎にタブ更新し、「ScrollyFox」で画面下に強制スクロール。コメの位置ずれなし。

 

今に至る

と、いうところが現在のところです。
ただ、「ScrollyFox」で常に下にスクロールさせようとしているのが負荷になるのか、たまに配信に使っているPCが全体的にもっさりした動きになるので、やっぱり雑談たぬき用のコメビュが欲しいかな…と思っている最中です。^^;

雑談たぬきのHTML

Firefoxで自動更新して雑談たぬきのコメントを表示しているけど、コメントが投稿されて更新される度に文字数などに応じてズレるのがすごいイライラします。

コメントビューアみたいのがあればなぁとは思うのですが、チラッと探してみた感じではヒットせず…

 

実際、雑談たぬきのHTMLってどんなデータ構造なってるのかなぁと思って、ソース表示してテキストエディタにコピペ、改行を入れて見やすくしてみましたが…

うーん、プログラムほとんど触ったことないけど、初心者でもなんとかできるレベル…か?^^;

今の配信環境

【ブラウザ】

Opera:ツイキャスとアフリカTVでそれぞれログインして配信できる状態にして放置

Chrome:ふわっち視聴

Firefox:雑談たぬき閲覧(アドオン「NoScript」で広告表示するJavascript制限、「Tab Auto Reload」で雑談たぬきの表示を10秒毎に更新、「ツリー型タブ」で表示スペース確保、「Status-4-Ever」でステータスバー表示、「ScrollyFox」で画面一番下にスクロール)

 

【外部配信ツール】

OBS Studio:ツイキャスとアフリカTVで2つ同時起動。プロファイルとシーンコレクションをそれぞれ作り、重ならないように使用。

 

【コメントビューア】

ふわっちコメントビューア:配信URLをChromeからコピー&ペースト。(自動化してぇ…)

 

今のとこ、こんな感じです。