25
OBS のプラグイン 作ってみた 2014/08/11 吉村 総一郎 ( ) @sifue

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

Embed Size (px)

DESCRIPTION

社内LTでOpen Broadcast Softwareのプラグインを作成してみたことを発表しました

Citation preview

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

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

2014/08/11 吉村 総一郎 ( )@sifue

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

twitchって知ってますか?

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

twitchとは

月4300万視聴者を誇る世界一のe-sports/ゲーム生放送配信サービス2011年にストリーミングサービスjustinからゲーム専門にスピンオフ先週justinの方がサービス終了してtwitchに専念することが発表された

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

e-sportsって知ってますか?

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

格ゲーとかサッカーのゲームのこと?

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

と思いきや最近は、

リアルタイムストラテジー(RTS)

トレーディングカード(TCG)

ファーストパーソンシューティング(FPS)がほとんど

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

中でも世界最大ユーザー数を誇るe-sportsゲームタイトル

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

League of Legends (通称:LoL)

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

LoLとは

WindowsとMacでプレイすることができる基本無料の5対5で戦うRTS2014年1月時点、ひと月のプレイヤー数が6700万人、日ごとの最大同時接続プレイヤー数750万人 (参考:将棋の推定競技人口600万人)現在プロリーグが存在する他、2013年時点の大会の優勝賞金は100万ドル。世界大会の同時視聴者数は32万人(米Wikipeiaより)。左の写真は世界大会の様子、右の写真はプロチームCloud9

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

twitchの放送を見ると、ユーザーの半分程度が

LoLの配信を視聴している

なお次に多いのはMinecraftとHearthstone(TCG)

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

LoLの配信でもよく使われtwitchの配信手順で

一番最初に薦められる配信ソフト

フリーなのでXSplitより先に勧められてます!

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

Open Broadcaster Software(通称:OBS)

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

OBSとはC++で書かれていて でホストされている

オープンソースな生放送配信ツールgithub

H264 ACCの配信、録画Intel のQuick Sync Videoに対応しており高速シーンや映像ソースの切替やレイアウトが自由デフォルトで、Twitch, Youtubeなどの有名サービスに連携配信(連携はないけどニコ生でも利用は可)様々なエンジンで動くゲームのウインドウのキャプチャに対応プラグイン機能

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

そう、プラグイン機能

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

ニコニコ生放送連携する

プラグインがかけないかチャレンジ!

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

OBSApiでできることホットキーの追加映像ソースの追加音声ソースの追加シーンの設定の追加設定パネルの追加レンダリング周りの拡張マイクの挙動の拡張

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

残念!OBSApiは映像ソースの追加がメインで

配信先の設定拡張は元にプルリク送るしかなさそう

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

とは言え、何かつくろうかなと

Visual Studio 2013 Expressの

VC++でMFCが使えない中

頑張ってみる

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

だがここ最近、ScalaとRubyという記述量が少ない言語しか触ってなくて読む量が多くなるC++がキツ

かった...//----------------------------------------------------- // log window

x = (fullscreenX/2)-(600/2); y = (fullscreenY/2)-(500/2);

int logPosX = GlobalConfig->GetInt(TEXT("General"), TEXT("LogPosX"), -9999); int logPosY = GlobalConfig->GetInt(TEXT("General"), TEXT("LogPosY"), -9999); int logSizeX = GlobalConfig->GetInt(TEXT("General"), TEXT("LogSizeX"), 600); int logSizeY = GlobalConfig->GetInt(TEXT("General"), TEXT("LogSizeY"), 500);

bInsideMonitors = false; for(UINT i=0; i<monitors.num(); i++)="" {="" if(="" logposx="">= monitors[i].rect.left && logPosX < monitors[i].rect logPosY >= monitors[i].rect.top && logPosY < monitors[i].rect.bottom ) { bInsideMonitors = true; break; } } </monitors.num();>

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

そこに光明、OBSのプラグインがC#で書けるプラグイン

を発見CLRHostPlugin

ただオリジナルは動かず、別のフォークして更新してる人の を利用バイナリ

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

ログが出力されて設定画面だけが表示されるプラグインを作った

class MySetttingPanel : AbstractWPFSettingsPane { public override string Category { get { return "ニコニコ生放送"; } }

public override bool HasDefaults() { return false; }

public override void SetDefaults() { throw new NotImplementedException(); } }

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

満足したwその他にとりあえずつかえるかもしれないなぁと思った公開API

FPSの表示配信開始と終了のフック

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

とはいえOBS本体ビルドしたい...Visual Studio 2013 Professionalが必要そう (6万円なり...)

解決する良いアイディア募集中です

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

まとめ世界のtwitchとe-sportsの盛り上がりすごいそこでよく利用されているOBSのプラグイン作ったVC++でMFCなしでUI作るの自分には苦行すぎたC#とWPFの開発すごい楽 (経験的にJavaのGUI開発の倍ぐらい楽)

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

以上ご静聴ありがとうございました