Obs-Browser представляет кроссплатформенный источник браузера, работающий на CEF (фреймворк Chromium), в Obs Studio. Источник браузера позволяет пользователю интегрировать веб-наложения в свои сцены с полным доступом к современным веб-API.
Кроме того, Obs-Browser позволяет интеграции услуг (связывание сторонних услуг) и док-станции браузера (веб-страницы, загруженные в сам интерфейс) на всех поддерживаемых платформах, за исключением Wayland (Linux).
Этот плагин включен по умолчанию на официальных пакетах в Windows, MacOS, Ubuntu PPA и официальном FlatPak (большинство распределений Linux).
Obs-Browser предоставляет глобальный объект, который обеспечивает доступ к некоторым специфическим функциональности Obs-специфической от JavaScript. Это может быть использовано для создания наложения, которое динамически адаптируется к изменениям в OBS.
Если вы используете TypeScript, определения типа для связей Obs-Browser доступны через NPM и пряжу.
# npm
npm install --save-dev @types/obs-studio
# yarn
yarn add --dev @types/obs-studio
/**
* @returns {string} OBS Browser plugin version
*/
window . obsstudio . pluginVersion
// => 2.17.0
/**
* @callback EventListener
* @param {CustomEvent} event
*/
/**
* @param {string} type
* @param {EventListener} listener
*/
window . addEventListener ( 'obsSceneChanged' , function ( event ) {
var t = document . createTextNode ( event . detail . name )
document . body . appendChild ( t )
} )
Описания для этих событий можно найти здесь.
Требуются разрешения: нет
/**
* @typedef {number} Level - The level of permissions. 0 for NONE, 1 for READ_OBS (OBS data), 2 for READ_USER (User data), 3 for BASIC, 4 for ADVANCED and 5 for ALL
*/
/**
* @callback LevelCallback
* @param {Level} level
*/
/**
* @param {LevelCallback} cb - The callback that receives the current control level.
*/
window . obsstudio . getControlLevel ( function ( level ) {
console . log ( level )
} )
Требуются разрешения: read_obs
/**
* @typedef {Object} Status
* @property {boolean} recording - not affected by pause state
* @property {boolean} recordingPaused
* @property {boolean} streaming
* @property {boolean} replaybuffer
* @property {boolean} virtualcam
*/
/**
* @callback StatusCallback
* @param {Status} status
*/
/**
* @param {StatusCallback} cb - The callback that receives the current output status of OBS.
*/
window . obsstudio . getStatus ( function ( status ) {
console . log ( status )
} )
Требуются разрешения: read_user
/**
* @typedef {Object} Scene
* @property {string} name - name of the scene
* @property {number} width - width of the scene
* @property {number} height - height of the scene
*/
/**
* @callback SceneCallback
* @param {Scene} scene
*/
/**
* @param {SceneCallback} cb - The callback that receives the current scene in OBS.
*/
window . obsstudio . getCurrentScene ( function ( scene ) {
console . log ( scene )
} )
Требуются разрешения: read_user
/**
* @callback ScenesCallback
* @param {string[]} scenes
*/
/**
* @param {ScenesCallback} cb - The callback that receives the scenes.
*/
window . obsstudio . getScenes ( function ( scenes ) {
console . log ( scenes )
} )
Требуются разрешения: read_user
/**
* @callback TransitionsCallback
* @param {string[]} transitions
*/
/**
* @param {TransitionsCallback} cb - The callback that receives the transitions.
*/
window . obsstudio . getTransitions ( function ( transitions ) {
console . log ( transitions )
} )
Требуются разрешения: read_user
/**
* @callback TransitionCallback
* @param {string} transition
*/
/**
* @param {TransitionCallback} cb - The callback that receives the transition currently set.
*/
window . obsstudio . getCurrentTransition ( function ( transition ) {
console . log ( transition )
} )
Требуются разрешения: базовые
/**
* Does not accept any parameters and does not return anything
*/
window . obsstudio . saveReplayBuffer ( )
Требуются разрешения: продвинутые
/**
* Does not accept any parameters and does not return anything
*/
window . obsstudio . startReplayBuffer ( )
Требуются разрешения: продвинутые
/**
* Does not accept any parameters and does not return anything
*/
window . obsstudio . stopReplayBuffer ( )
Требуются разрешения: продвинутые
/**
* @param {string} name - Name of the scene
*/
window . obsstudio . setCurrentScene ( name )
Требуются разрешения: продвинутые
/**
* @param {string} name - Name of the transition
*/
window . obsstudio . setCurrentTransition ( name )
Требуются разрешения: все
/**
* Does not accept any parameters and does not return anything
*/
window . obsstudio . startStreaming ( )
Требуются разрешения: все
/**
* Does not accept any parameters and does not return anything
*/
window . obsstudio . stopStreaming ( )
Требуются разрешения: все
/**
* Does not accept any parameters and does not return anything
*/
window . obsstudio . startRecording ( )
Требуются разрешения: все
/**
* Does not accept any parameters and does not return anything
*/
window . obsstudio . stopRecording ( )
Требуются разрешения: все
/**
* Does not accept any parameters and does not return anything
*/
window . obsstudio . pauseRecording ( )
Требуются разрешения: все
/**
* Does not accept any parameters and does not return anything
*/
window . obsstudio . unpauseRecording ( )
Требуются разрешения: все
/**
* Does not accept any parameters and does not return anything
*/
window . obsstudio . startVirtualcam ( )
Требуются разрешения: все
/**
* Does not accept any parameters and does not return anything
*/
window . obsstudio . stopVirtualcam ( )
Этот метод является наследием. Вместо этого зарегистрируйте слушатель событий.
/**
* onVisibilityChange gets callbacks when the visibility of the browser source changes in OBS
*
* @deprecated
* @see obsSourceVisibleChanged
* @param {boolean} visibility - True -> visible, False -> hidden
*/
window . obsstudio . onVisibilityChange = function ( visibility ) {
} ;
Этот метод является наследием. Вместо этого зарегистрируйте слушатель событий.
/**
* onActiveChange gets callbacks when the active/inactive state of the browser source changes in OBS
*
* @deprecated
* @see obsSourceActiveChanged
* @param {bool} True -> active, False -> inactive
*/
window . obsstudio . onActiveChange = function ( active ) {
} ;
Obs-Browser включает интеграцию с запросами поставщика Obs-Websocket. Имя поставщика для использования-это obs-browser
, а доступные запросы:
emit_event
- Takes event_name
и? параметры event_data
. Излучает пользовательское событие для всех источников браузера. Чтобы подписаться на события, см. ЗдесьВ настоящее время нет доступных мероприятий поставщика.
Browser Obs не может быть построен автономным. Он построен как часть OBS Studio.
Следуя инструкциям, это позволит браузерному источнику и пользовательским браузерам доки на всех трех платформах. Требуются и BUILD_BROWSER
, и CEF_ROOT_DIR
.
Следуйте инструкциям по сборке и обязательно загрузите обертку CEF и установите CEF_ROOT_DIR
в CMAKE, чтобы указать на извлеченную обертку.
Используйте сценарий MacOS Full Build. Это автоматически загрузит и включит браузер Obs.
Следуйте инструкциям по сборке и выберите опцию «Если построение с источником браузера». Это включает в себя шаги для загрузки/извлечения обертки CEF и установить необходимые переменные Cmake.