OBSのプラグイン
作ってみた2014/08/11 吉村 総一郎 ( )@sifue
twitch
って知ってますか?
twitchとは
月4300万視聴者を誇る世界一のe-sports/ゲーム生放送配信サービス
2011年にストリーミングサービスjustinからゲーム専門にスピンオフ
先週justinの方がサービス終了してtwitchに専念することが発表された
e-sportsって
知ってますか?
格ゲーとかサッカーの
ゲームのこと?
と思いきや最近は、
リアルタイムストラテジー(RTS)
トレーディングカード(TCG)
ファーストパーソンシューティング(FPS)
がほとんど
中でも世界最大ユーザー数を誇る
e-sportsゲームタイトル
League of Legends (通称:LoL)
LoLとは
WindowsとMacでプレイすることができる基本無料の5対5で戦うRTS
2014年1月時点、ひと月のプレイヤー数が6700万人、日ごとの最大同時接
続プレイヤー数750万人 (参考:将棋の推定競技人口600万人)
現在プロリーグが存在する他、2013年時点の大会の優勝賞金は100万ド
ル。世界大会の同時視聴者数は32万人(米Wikipeiaより)。
左の写真は世界大会の様子、右の写真はプロチームCloud9
twitchの放送を見ると、
ユーザーの半分程度が
LoLの配信を視聴している
なお次に多いのはMinecraftとHearthstone(TCG)
LoLの配信でもよく使われ
twitchの配信手順で
一番最初に薦められる配信ソフト
フリーなのでXSplitより先に勧められてます!
Open Broadcaster Software
(通称:OBS)
OBSとは
C++で書かれていて でホストされている
オープンソースな生放送配信ツール
github
H264 ACCの配信、録画
Intel のQuick Sync Videoに対応しており高速
シーンや映像ソースの切替やレイアウトが自由
デフォルトで、Twitch, Youtubeなどの有名サービスに連携配信(連携はない
けどニコ生でも利用は可)
様々なエンジンで動くゲームのウインドウのキャプチャに対応
プラグイン機能
そう、プラグイン機能
ニコニコ生放送連携する
プラグインがかけないかチャレンジ!
OBSApiでできること
ホットキーの追加
映像ソースの追加
音声ソースの追加
シーンの設定の追加
設定パネルの追加
レンダリング周りの拡張
マイクの挙動の拡張
残念!
OBSApiは映像ソースの追加がメインで
配信先の設定拡張は元にプルリク送るしかなさそう
とは言え、何かつくろうかなと
Visual Studio 2013 Expressの
VC++でMFCが使えない中
頑張ってみる
だがここ最近、ScalaとRubyという記述量が少ない
言語しか触ってなくて読む量が多くなるC++がキツ
かった...
//-----------------------------------------------------
//logwindow
x=(fullscreenX/2)-(600/2);
y=(fullscreenY/2)-(500/2);
intlogPosX =GlobalConfig->GetInt(TEXT("General"),TEXT("LogPosX"),-9999);
intlogPosY =GlobalConfig->GetInt(TEXT("General"),TEXT("LogPosY"),-9999);
intlogSizeX=GlobalConfig->GetInt(TEXT("General"),TEXT("LogSizeX"),600);
intlogSizeY=GlobalConfig->GetInt(TEXT("General"),TEXT("LogSizeY"),500);
bInsideMonitors=false;
for(UINTi=0;i<monitors.num();i++)=""{=""if(=""logposx="">=monitors[i].rect.left&&logPosX<monitors[i].rec
logPosY>=monitors[i].rect.top &&logPosY<monitors[i].rect.bottom)
{
bInsideMonitors=true;
break;
}
}
</monitors.num();>
そこに光明、
OBSのプラグインがC#で書けるプラグイン
を発見CLRHostPlugin
ただオリジナルは動かず、別のフォークして更新し
てる人の を利用バイナリ
ログが出力されて設定画面だけが表示されるプラ
グインを作った
classMySetttingPanel:AbstractWPFSettingsPane
{
publicoverridestringCategory
{
get{return"ニコニコ生放送";}
}
publicoverrideboolHasDefaults()
{
returnfalse;
}
publicoverridevoidSetDefaults()
{
thrownewNotImplementedException();
}
}
満足したw
その他にとりあえずつかえるかもしれないなぁと思った公開API
FPSの表示
配信開始と終了のフック
とはいえOBS本体ビルドしたい...
Visual Studio 2013 Professionalが必要そう (6万円なり...)
解決する良いアイディア募集中です
まとめ
世界のtwitchとe-sportsの盛り上がりすごい
そこでよく利用されているOBSのプラグイン作った
VC++でMFCなしでUI作るの自分には苦行すぎた
C#とWPFの開発すごい楽 (経験的にJavaのGUI開発の倍ぐらい楽)
以上
ご静聴ありがとうございました

Obsのプラグイン作ってみた