<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          「GoCN酷Go推薦」OBS連接器go-obs-websocket

          共 10178字,需瀏覽 21分鐘

           ·

          2022-04-26 13:37

          推薦理由

          互聯(lián)網(wǎng)的興起帶動了直播行業(yè)的火熱,除了少數(shù)直播網(wǎng)站有自己的推流工具之外,OBS是主流的推流工具,廣泛應(yīng)用在直轉(zhuǎn)播技術(shù)之上。

          簡介

          go-obs-websocket是一個與OBS進(jìn)行websocket通信的連接庫,具備調(diào)用大部分OBS功能的接口,在互動直播和智能轉(zhuǎn)播技術(shù)上廣泛應(yīng)用。

          快速開始

          安裝

          go get github.com/christopher-dG/go-obs-websocket

          obs簡介

          界面

          ![[obs.png]] 點(diǎn)擊<工具>可以設(shè)置websocket的參數(shù),默認(rèn)是監(jiān)聽本地的4444端口

          建立連接

           import obsws "github.com/christopher-dG/go-obs-websocket"

           c := obsws.Client{Host: "localhost", Port: 4444}
           if err := c.Connect(); err != nil {
            log.Fatal(err)
           }
           defer c.Disconnect()

          發(fā)送請求

           // Send and receive a request asynchronously.
           req := obsws.NewGetStreamingStatusRequest()
           if err := req.Send(c); err != nil {
            log.Fatal(err)
           }

           // This will block until the response comes (potentially forever).
           resp, err := req.Receive()
           if err != nil {
            log.Fatal(err)
           }
           log.Println("streaming:", resp.Streaming)
          • 創(chuàng)建請求,這里創(chuàng)建的是流狀態(tài)請求
          • 發(fā)送請求
          • 獲取請求結(jié)果 這里的請求會阻塞當(dāng)前協(xié)程,當(dāng)OBS正處于推流時,resp.Steaming值為true,反之為false。

          go-obs-websocket  提供了眾多請求接口,可以使用如下命令獲取

          #linux
          go doc github.com/christopher-dG/go-obs-websocket |grep "Request " |grep type

          #
          windows
          go doc github.com/christopher-dG/go-obs-websocket |findstr "Request " | findstr type

          接下來我們挑幾個常見的來看看使用案例

          開始/停止推流

           req := obsws.NewStartStopStreamingRequest()
           if err := req.Send(c); err != nil {
            log.Fatal(err)
           }

           resp, err := req.Receive()
           if err != nil {
            log.Fatal(err)
           }
           log.Println("streaming:", resp.Status())

          開始錄制

           req := obsws.NewStartRecordingRequest()
           if err := req.Send(c); err != nil {
            log.Fatal(err)
           }

           resp, err := req.Receive()
           if err != nil {
            log.Fatal(err)
           }
           log.Println("streaming:", resp.Status())

          停止錄制

           req := obsws.NewStopRecordingRequest()
           if err := req.Send(c); err != nil {
            log.Fatal(err)
           }

           resp, err := req.Receive()
           if err != nil {
            log.Fatal(err)
           }
           log.Println("streaming:", resp.Status())

          轉(zhuǎn)換場景

           req := obsws.NewSetCurrentSceneRequest("scene1")
           if err := req.Send(c); err != nil {
            log.Fatal(err)
           }

           resp, err := req.Receive()
           if err != nil {
            log.Fatal(err)
           }
           log.Println("streaming:", resp.Status())

          處理響應(yīng)

              c.AddEventHandler("SwitchScenes"func(e obsws.Event) {
                  // Make sure to assert the actual event type.
                  log.Println("new scene:", e.(obsws.SwitchScenesEvent).SceneName)
              })

          注冊鉤子函數(shù),響應(yīng)OBS的信號。一共可注冊的鉤子函數(shù)key如下:

          "SwitchScenes"                  場景切換
          "ScenesChanged"                 場景變化
          "SceneCollectionChanged"        場景來源變化
          "SceneCollectionListChanged"    場景來源列表變化
          "SwitchTransition"              轉(zhuǎn)場
          "TransitionListChanged"         轉(zhuǎn)場列表變化
          "TransitionDurationChanged"     轉(zhuǎn)場時長變化
          "TransitionBegin"               開始轉(zhuǎn)場
          "ProfileChanged"                配置變化
          "ProfileListChanged"            配置文件列表變化
          "StreamStarting"                推流開始啟動
          "StreamStarted"                 推流啟動完成
          "StreamStopping"                推流正在停止
          "StreamStopped"                 推流已暫停
          "StreamStatus"                  推流狀態(tài)
          "RecordingStarting"             
          "RecordingStarted"              
          "RecordingStopping"             
          "RecordingStopped"              
          "RecordingPaused"               
          "RecordingResumed"              
          "ReplayStarting"                回放
          "ReplayStarted"                 
          "ReplayStopping"                
          "ReplayStopped"                 
          "Exiting"                      退出 
          "Heartbeat"                    心跳 
          "BroadcastCustomMessage"       廣播消息 
          "SourceCreated"                來源創(chuàng)建
          "SourceDestroyed"              來源銷毀
          "SourceVolumeChanged"          來源音頻改變
          "SourceMuteStateChanged"       音量改變
          "SourceAudioSyncOffsetChanged" 
          "SourceAudioMixersChanged"      
          "SourceRenamed"                 
          "SourceFilterAdded"            濾波添加 
          "SourceFilterRemoved"          濾波移除
          "SourceFilterVisibilityChanged" 濾波可見性改變
          "SourceFiltersReordered"        
          "SourceOrderChanged"           來源順序變換 
          "SceneItemAdded"               場景元素添加
          "SceneItemRemoved"             場景元素移除 
          "SceneItemVisibilityChanged"    
          "SceneItemTransformChanged"     
          "SceneItemSelected"             
          "SceneItemDeselected"           
          "PreviewSceneChanged"           
          "StudioModeSwitched"            

          總結(jié)

          OBS是使用最廣的推流工具,利用go-obs-websocket可以很方便的操作大部分功能,目前在日常操作中只有創(chuàng)建場景的接口沒有找到。比如我們可以做一系列的轉(zhuǎn)場,在直播推流過程中監(jiān)聽事件自動觸發(fā),或者做一些特效能隨著轉(zhuǎn)場漸入漸出。祝大家玩的開心!!

          參考資料

          • go-obs-websocket
          • obs-websocket


          酷Go推薦》招募:


          各位Gopher同學(xué),最近我們社區(qū)打算推出一個類似GoCN每日新聞的新欄目《酷Go推薦》,主要是每周推薦一個庫或者好的項目,然后寫一點(diǎn)這個庫使用方法或者優(yōu)點(diǎn)之類的,這樣可以真正的幫助到大家能夠?qū)W習(xí)到

          新的庫,并且知道怎么用。


          大概規(guī)則和每日新聞類似,如果報名人多的話每個人一個月輪到一次,歡迎大家報名!戳「閱讀原文」,即可報名


          想要了解更多 Golang 相關(guān)的內(nèi)容,歡迎掃描下方?? 關(guān)注 公眾號,回復(fù)關(guān)鍵詞 [實(shí)戰(zhàn)群]  ,就有機(jī)會進(jìn)群和我們進(jìn)行交流~



          瀏覽 82
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人性爱视频在线免费观看 | 午夜电影无码 | 婷婷五月天操逼 | 国产午夜福利精品爽爽爽 | ijⅰjzzijⅰjzz日本 |