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

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

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

27346d00a82355e1fc9bca891b3003dc?s=128

Soichiro Yoshimura

August 15, 2014
Tweet

Transcript

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

  2. twitch って知ってますか?

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

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

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

  6. と思いきや最近は、 リアルタイムストラテジー(RTS) トレーディングカード(TCG) ファーストパーソンシューティング(FPS) がほとんど

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

  8. League of Legends (通称:LoL)

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

  10. twitchの放送を見ると、 ユーザーの半分程度が LoLの配信を視聴している なお次に多いのはMinecraftとHearthstone(TCG)

  11. LoLの配信でもよく使われ twitchの配信手順で 一番最初に薦められる配信ソフト フリーなのでXSplitより先に勧められてます!

  12. Open Broadcaster Software (通称:OBS)

  13. OBSとは C++で書かれていて でホストされている オープンソースな生放送配信ツール github H264 ACCの配信、録画 Intel のQuick Sync

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

  15. ニコニコ生放送連携する プラグインがかけないかチャレンジ!

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

  17. 残念! OBSApiは映像ソースの追加がメインで 配信先の設定拡張は元にプルリク送るしかなさそう

  18. とは言え、何かつくろうかなと Visual Studio 2013 Expressの VC++でMFCが使えない中 頑張ってみる

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

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - / / l o g w i n d o w x = ( f u l l s c r e e n X / 2 ) - ( 6 0 0 / 2 ) ; y = ( f u l l s c r e e n Y / 2 ) - ( 5 0 0 / 2 ) ; i n t l o g P o s X = G l o b a l C o n f i g - > G e t I n t ( T E X T ( " G e n e r a l " ) , T E X T ( " L o g P o s X " ) , - 9 9 9 9 ) ; i n t l o g P o s Y = G l o b a l C o n f i g - > G e t I n t ( T E X T ( " G e n e r a l " ) , T E X T ( " L o g P o s Y " ) , - 9 9 9 9 ) ; i n t l o g S i z e X = G l o b a l C o n f i g - > G e t I n t ( T E X T ( " G e n e r a l " ) , T E X T ( " L o g S i z e X " ) , 6 0 0 ) ; i n t l o g S i z e Y = G l o b a l C o n f i g - > G e t I n t ( T E X T ( " G e n e r a l " ) , T E X T ( " L o g S i z e Y " ) , 5 0 0 ) ; b I n s i d e M o n i t o r s = f a l s e ; f o r ( U I N T i = 0 ; i < m o n i t o r s . n u m ( ) ; i + + ) = " " { = " " i f ( = " " l o g p o s x = " " > = m o n i t o r s [ i ] . r e c t . l e f t & & l o g P o s X < m o n i t o r s [ i ] . r e c l o g P o s Y > = m o n i t o r s [ i ] . r e c t . t o p & & l o g P o s Y < m o n i t o r s [ i ] . r e c t . b o t t o m ) { b I n s i d e M o n i t o r s = t r u e ; b r e a k ; } } < / m o n i t o r s . n u m ( ) ; >
  20. そこに光明、 OBSのプラグインがC#で書けるプラグイン を発見 CLRHostPlugin ただオリジナルは動かず、別のフォークして更新し てる人の を利用 バイナリ

  21. ログが出力されて設定画面だけが表示されるプラ グインを作った c l a s s M y S

    e t t t i n g P a n e l : A b s t r a c t W P F S e t t i n g s P a n e { p u b l i c o v e r r i d e s t r i n g C a t e g o r y { g e t { r e t u r n " ニコニコ生放送" ; } } p u b l i c o v e r r i d e b o o l H a s D e f a u l t s ( ) { r e t u r n f a l s e ; } p u b l i c o v e r r i d e v o i d S e t D e f a u l t s ( ) { t h r o w n e w N o t I m p l e m e n t e d E x c e p t i o n ( ) ; } }
  22. 満足したw その他にとりあえずつかえるかもしれないなぁと思った公開API FPSの表示 配信開始と終了のフック

  23. とはいえOBS本体ビルドしたい... Visual Studio 2013 Professionalが必要そう (6万円なり...) 解決する良いアイディア募集中です

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

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