obsproject/obs-browser được TopGit xếp vào nhóm dự án backend, với 911 sao trên GitHub, viết chủ yếu bằng C++. CEF-based OBS Studio browser plugin
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
obs-browser introduces a cross-platform Browser Source, powered by CEF (Chromium Embedded Framework), to OBS Studio. A Browser Source allows the user to integrate web-based overlays into their scenes, with complete access to modern web APIs.
Additionally, obs-browser enables Service Integration (linking third party services) and Browser Docks (webpages loaded into the interface itself) on all supported platforms, except for Wayland (Linux).
This plugin is included by default on official packages on Windows, macOS, the Ubuntu PPA and the official Flatpak (most Linux distributions).
JS Bindings
obs-browser provides a global object that allows access to some OBS-specific functionality from JavaScript. This can be used to create an overlay that adapts dynamically to changes in OBS.
TypeScript Type Definitions
If you're using TypeScript, type definitions for the obs-browser bindings are available through npm and yarn.
/**
* @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)
})
Available events
Descriptions for these events can be found here.
obsSceneChanged
obsSceneListChanged
obsTransitionChanged
obsTransitionListChanged
obsSourceVisibleChanged
obsSourceActiveChanged
obsStreamingStarting
obsStreamingStarted
obsStreamingStopping
obsStreamingStopped
obsRecordingStarting
obsRecordingStarted
obsRecordingPaused
obsRecordingUnpaused
obsRecordingStopping
obsRecordingStopped
obsReplaybufferStarting
obsReplaybufferStarted
obsReplaybufferSaved
obsReplaybufferStopping
obsReplaybufferStopped
obsVirtualcamStarted
obsVirtualcamStopped
obsExit
[Any custom event emitted via obs-websocket vendor requests]
Control OBS
Get webpage control permissions
Permissions required: NONE
/**
* @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)
})
Get OBS output status
Permissions required: 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)
})
Get the current scene
Permissions required: 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)
})
Get scenes
Permissions required: READ_USER
/**
* @callback ScenesCallback
* @param {string[]} scenes
*/
/**
* @param {ScenesCallback} cb - The callback that receives the scenes.
*/
window.obsstudio.getScenes(function (scenes) {
console.log(scenes)
})
Get transitions
Permissions required: READ_USER
/**
* @callback TransitionsCallback
* @param {string[]} transitions
*/
/**
* @param {TransitionsCallback} cb - The callback that receives the transitions.
*/
window.obsstudio.getTransitions(function (transitions) {
console.log(transitions)
})
Get current transition
Permissions required: 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)
})
Save the Replay Buffer
Permissions required: BASIC
/**
* Does not accept any parameters and does not return anything
*/
window.obsstudio.saveReplayBuffer()
Start the Replay Buffer
Permissions required: ADVANCED
/**
* Does not accept any parameters and does not return anything
*/
window.obsstudio.startReplayBuffer()
Stop the Replay Buffer
Permissions required: ADVANCED
/**
* Does not accept any parameters and does not return anything
*/
window.obsstudio.stopReplayBuffer()
Change scene
Permissions required: ADVANCED
/**
* @param {string} name - Name of the scene
*/
window.obsstudio.setCurrentScene(name)
Set the current transition
Permissions required: ADVANCED
/**
* @param {string} name - Name of the transition
*/
window.obsstudio.setCurrentTransition(name)
Start streaming
Permissions required: ALL
/**
* Does not accept any parameters and does not return anything
*/
window.obsstudio.startStreaming()
Stop streaming
Permissions required: ALL
/**
* Does not accept any parameters and does not return anything
*/
window.obsstudio.stopStreaming()
Start recording
Permissions required: ALL
/**
* Does not accept any parameters and does not return anything
*/
window.obsstudio.startRecording()
Stop recording
Permissions required: ALL
/**
* Does not accept any parameters and does not return anything
*/
window.obsstudio.stopRecording()
Pause recording
Permissions required: ALL
/**
* Does not accept any parameters and does not return anything
*/
window.obsstudio.pauseRecording()
Unpause recording
Permissions required: ALL
/**
* Does not accept any parameters and does not return anything
*/
window.obsstudio.unpauseRecording()
Start the Virtual Camera
Permissions required: ALL
/**
* Does not accept any parameters and does not return anything
*/
window.obsstudio.startVirtualcam()
Stop the Virtual Camera
Permissions required: ALL
/**
* Does not accept any parameters and does not return anything
*/
window.obsstudio.stopVirtualcam()
Register for visibility callbacks
This method is legacy. Register an event listener instead.
/**
* 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) {
};
Register for active/inactive callbacks
This method is legacy. Register an event listener instead.
/**
* 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-websocket Vendor
obs-browser includes integration with obs-websocket's Vendor requests. The vendor name to use is obs-browser, and available requests are:
emit_event - Takes event_name and ?event_data parameters. Emits a custom event to all browser sources. To subscribe to events, see here
See #340 for example usage.
There are no available vendor events at this time.
Building
OBS Browser cannot be built standalone. It is built as part of OBS Studio.
By following the instructions, this will enable Browser Source & Custom Browser Docks on all three platforms. Both BUILD_BROWSER and CEF_ROOT_DIR are required.
On Windows
Follow the build instructions and be sure to download the CEF Wrapper and set CEF_ROOT_DIR in CMake to point to the extracted wrapper.
On macOS
Use the macOS Full Build Script. This will automatically download & enable OBS Browser.
On Linux
Follow the build instructions and choose the "If building with browser source" option. This includes steps to download/extract the CEF Wrapper, and set the required CMake variables.
obsproject/obs-browser thuộc nhóm Backend trên TopGit, cùng 4 topic GitHub. Trang Trending và Topics liệt kê các repo cùng số sao và cùng ngôn ngữ để so sánh.
Đọc thêm về obsproject/obs-browser ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/obsproject/obs-browser là nguồn chính thức.
obsproject/obs-browser có bao nhiêu sao?
obsproject/obs-browser có 911 sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/obsproject/obs-browser. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
obsproject/obs-browser có những chủ đề gì?
GitHub topics của obsproject/obs-browser: "c", "c-plus-plus", "cef", "obs-studio". TopGit xếp repo vào nhóm Backend.
obsproject/obs-browser còn đang phát triển không?
Commit gần nhất trên obsproject/obs-browser là 5 ngày trước (theo timestamp GitHub). Repo có 271 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
obsproject/obs-browser viết bằng ngôn ngữ gì?
obsproject/obs-browser chủ yếu viết bằng C++. Trường "language" của GitHub dựa trên phần lớn byte ở nhánh mặc định.
Vì sao obsproject/obs-browser được xếp vào nhóm Backend?
TopGit xếp obsproject/obs-browser vào nhóm Backend dựa trên GitHub topics và mô tả của repo (gắn thẻ: "c", "c-plus-plus", "cef"). Việc phân loại dựa trên metadata thật của repo, không phải đoán theo cảm tính biên tập.
Đọc đầy đủ README ở tab phía trên.
Chưa chắc obs-browser có hợp với bạn?
Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về obs-browser.