Home  >  Article  >  Web Front-end  >  How to get obs push flow in vue

How to get obs push flow in vue

PHPz
PHPzOriginal
2023-04-26 14:25:581386browse

With the continuous development of the live broadcast industry, more and more developers are beginning to pay attention to live broadcast technology. In the live broadcast process, streaming is a crucial part. For developers using the Vue framework, how to obtain obs push streaming is also an important issue. This article will introduce how to get obs push flow in vue.

1. What is obs

OBS is a free open source software and a professional video live broadcast software. OBS can support live broadcast under Windows and MacOS. Users can add subtitles, filters, adjust the video screen, etc. during the live broadcast.

2. Use vue to get obs push flow

1. Install obs

First you need to install the OBS software, which can be downloaded and installed from the official website or on GitHub Download.

2. Install the obs-websocket plug-in

Next, you need to install the obs-websocket plug-in. This plug-in allows OBS to support WebSockets connection, thus realizing the connection between the browser and OBS. The method to install the obs-websocket plug-in is as follows:

(1) Open the "Tools" menu in the OBS software and select the "Scripts" option.

(2) Click the "New" button, enter the script name, then select "Lua Script" (Lua Script) and click the "OK" button.

(3) Enter the following code:

obs = obslua

websocket = require('websocket')

ws = nil

obs.obs_register_output_format('WebSockets Output', 'WebSockets Output',
function(settings)

local port = obs.obs_data_get_int(settings, 'port')
local password = obs.obs_data_get_string(settings, 'password')

ws = websocket.new_client('ws://localhost:' .. tostring(port) .. 
    '?password=' .. password)

end, function()

 ws = nil

end
)

obs.obs_register_service('WebSockets Service', '',
function(settings)

local port = obs.obs_data_get_int(settings, 'port')
local password = obs.obs_data_get_string(settings, 'password')

ws = websocket.new_server('127.0.0.1', port)
ws.onmessage = function(ws,message)
    if message == password then
        ws.send('authenticated')
    end
end

end, function()

ws:close()
ws = nil

end)

obs. obs_register_source({

type = obs.OBS_SOURCE_TYPE_INPUT,
id = 'websocket_input',
output_flags = obs.OBS_SOURCE_VIDEO,
get_name = function()
    return 'WebSockets Input'
end,
get_defaults = function(settings)
    obs.obs_data_set_default_int(settings, 'port', 4444)
    obs.obs_data_set_default_string(settings, 'password', 'password123')
end,
create = function(source, settings)
    local port = obs.obs_data_get_int(settings, 'port')
    local password = obs.obs_data_get_string(settings, 'password')
    local video_format = obs.obs_source_get_base_source(source).b
    source.websocket = websocket.new_client('ws://localhost:' .. 
        tostring(port) .. '?password=' .. password)
    source.websocket.onmessage = function(ws, message)
        local packet = msgpack.unpack(message)
        if packet ~= nil then
            if packet.type == 'video' then
                -- do something with the video data
            end
        end
    end
    obs.obs_source_set_output_format(source, 'WebSockets Output',
        video_format)
    return source
end,
get_properties = function(source)
    local props = obs.obs_properties_create()
    obs.obs_properties_add_int(props, 'port', 'Port', 1024, 65535, 1)
    obs.obs_properties_add_text(props, 'password', 'Password',
     obs.OBS_TEXT_DEFAULT)
    return props
end

})

3. Obtain obs push flow in the vue project

Using OBS push flow in the vue project can be provided by calling the obs-websocket plug-in Interface to obtain obs push stream. You can connect to OBS through WebSocket in the vue project and send specified commands (such as start pushing, pause pushing, stop pushing, etc.) to control the push status of OBS.

The following code example uses Vue.js to obtain obs push flow:

<template>
  <div>
    <video ref="video" autoplay></video>
  </div>
</template>

<script>
import WebSocket from 'ws'

export default {
  data() {
    return {
      socket: null
    }
  },
  mounted() {
    this.socket = new WebSocket('ws://localhost:4444')
    this.socket.addEventListener('open', () => {
      console.log('Connection opened to OBS')
      this.socket.send(JSON.stringify({
        type: 'start',
        data: {
          width: 1920,
          height: 1080
        }
      }))
    })
    this.socket.addEventListener('message', evt => {
      const data = JSON.parse(evt.data)
      if (data.type === 'video') {
        this.$refs.video.src = URL.createObjectURL(new Blob([data.data]))
      }
    })
    this.socket.addEventListener('error', evt => {
      console.error('Socket error:', evt)
    })
  },
  beforeDestroy() {
    this.socket.close()
  }
}
</script>

When the page component is loaded, it will connect to OBS through WebSocket and send the specified command. When the socket receives the data pushed by OBS, it will automatically play the video stream in the data. When the page component is destroyed, close the WebSocket connection.

3. Add transition effects to OBS push flow in vue

In vue, you can add transition effects to OBS push flow through CSS3 transition effects. You can use the transition component in the component and set the enter-active-class and leave-active-class attributes to custom transition class names to achieve the effect of adding transition interaction effects.

The following code example uses Vue.js and CSS3 to add transition effects to OBS push streams:

<template>
  <div>
    <transition name="fade">
      <video ref="video" autoplay></video>
    </transition>
  </div>
</template>

<style>
.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter,
.fade-leave-to {
  opacity: 0;
}
</style>

Set transition animation effects through CSS3 to allow users to get better results from the provided push streams. viewing experience.

4. Summary

This article introduces how to obtain OBS push flow in Vue.js. By calling the interface provided by the obs-websocket plug-in, the control operation of the interface is realized. At the same time, it supports the addition of CSS3 transition effects to provide users with a better viewing experience. I believe that the introduction in this article can help everyone better master the development and application of Vue.js and OBS applications.

The above is the detailed content of How to get obs push flow in vue. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn