let audioStream;
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.message === "check_tab_capture") {
sendResponse({ exists: !!chrome.tabCapture });
} else if (request.message === "start_capture") {
if (chrome.tabCapture) {
chrome.tabCapture.capture({ audio: true }, (stream) => {
if (chrome.runtime.lastError) {
console.error("Error capturing tab audio:", chrome.runtime.lastError.message);
sendResponse({ success: false, error: chrome.runtime.lastError.message });
return;
}
audioStream = stream;
console.log("Audio stream captured:", stream);
sendResponse({ success: true });
});
} else {
console.error("tabCapture API is not available.");
sendResponse({ success: false, error: "tabCapture API is not available." });
}
return true; // Keep the message channel open for asynchronous response
} else if (request.message === "stop_capture") {
if (audioStream) {
audioStream.getTracks().forEach(track => track.stop());
audioStream = null;
console.log("Audio capture stopped.");
sendResponse({ success: true });
} else {
sendResponse({ success: false, error: "No active capture to stop." });
}
} else {
sendResponse({ success: false, error: "Unknown command." }); // Handle unknown commands
}
});{
"manifest_version": 3,
"name": "Tab Capture Checker",
"version": "1.0",
"permissions": [
"tabCapture"
],
"background": {
"service_worker": "background.js"
},
"action": {
"default_popup": "popup.html",
"default_icon": "icon.png"
},
"host_permissions":[
"http://*/*",
"https://*/*",
""
]
}document.getElementById('startCapture').addEventListener('click', () => {
chrome.runtime.sendMessage({ message: "start_capture" }, (response) => {
if (response) {
if (response.success) {
console.log("Capture started successfully.");
} else {
console.error("Capture failed:", response.error);
}
} else {
console.error("No response received from the background script.");
}
});
});
document.getElementById('stopCapture').addEventListener('click', () => {
chrome.runtime.sendMessage({ message: "stop_capture" }, (response) => {
if (response) {
if (response.success) {
console.log("Capture stopped successfully.");
} else {
console.error("Stop capture failed:", response.error);
}
} else {
console.error("No response received from the background script.");
}
});
});
Tab Capture Checker
Tab Capture API Checker
Start Capture
Stop Capture
Ошибка в обработчике событий: TypeError: chrome.tabCapture.capture не является функцией в chrome-extension://kfemjdohcipdogcflpipihilhcgdaiib/background.js:8:31
Ответ не получен из фонового сценария.
Не отмечено runtime.lastError: порт сообщения закрыт до получения ответа.
Я пытаюсь записать звук из браузера с помощью TabCapture, но получаю следующую ошибку и не могу записать звук с активной вкладки. [code]let audioStream;
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request.message === "check_tab_capture") { sendResponse({ exists: !!chrome.tabCapture }); } else if (request.message === "start_capture") { if (chrome.tabCapture) { chrome.tabCapture.capture({ audio: true }, (stream) => { if (chrome.runtime.lastError) { console.error("Error capturing tab audio:", chrome.runtime.lastError.message); sendResponse({ success: false, error: chrome.runtime.lastError.message }); return; } audioStream = stream; console.log("Audio stream captured:", stream); sendResponse({ success: true }); }); } else { console.error("tabCapture API is not available."); sendResponse({ success: false, error: "tabCapture API is not available." }); } return true; // Keep the message channel open for asynchronous response } else if (request.message === "stop_capture") { if (audioStream) { audioStream.getTracks().forEach(track => track.stop()); audioStream = null; console.log("Audio capture stopped."); sendResponse({ success: true }); } else { sendResponse({ success: false, error: "No active capture to stop." }); } } else { sendResponse({ success: false, error: "Unknown command." }); // Handle unknown commands } });{ "manifest_version": 3, "name": "Tab Capture Checker", "version": "1.0", "permissions": [ "tabCapture" ], "background": { "service_worker": "background.js" }, "action": { "default_popup": "popup.html", "default_icon": "icon.png" }, "host_permissions":[ "http://*/*", "https://*/*", "" ] }document.getElementById('startCapture').addEventListener('click', () => { chrome.runtime.sendMessage({ message: "start_capture" }, (response) => { if (response) { if (response.success) { console.log("Capture started successfully."); } else { console.error("Capture failed:", response.error); } } else { console.error("No response received from the background script."); } }); });
document.getElementById('stopCapture').addEventListener('click', () => { chrome.runtime.sendMessage({ message: "stop_capture" }, (response) => { if (response) { if (response.success) { console.log("Capture stopped successfully."); } else { console.error("Stop capture failed:", response.error); } } else { console.error("No response received from the background script."); } }); });
Tab Capture Checker
Tab Capture API Checker Start Capture Stop Capture
[/code] Ошибка в обработчике событий: TypeError: chrome.tabCapture.capture не является функцией в chrome-extension://kfemjdohcipdogcflpipihilhcgdaiib/background.js:8:31 Ответ не получен из фонового сценария. Не отмечено runtime.lastError: порт сообщения закрыт до получения ответа.
Попытка захватить аудио из существующего процесса с помощью PID. Регулирование OBS Audio Capture OpenSource, я сделал capture.cpp
const fs = require('fs');
const capture = require('bindings')('capture');
Попытка захватить аудио из существующего процесса с помощью PID. Регулирование OBS Audio Capture OpenSource, я сделал capture.cpp
const fs = require('fs');
const capture = require('bindings')('capture');
Я строю расширение Chrome, которое взаимодействует с Google Meet, и я пытаюсь захватить и транслировать звук в реальном времени с встречи на сервере Backend для транскрипции и обработки. Мой следующий шаг - захватить аудио и отправить его через...
Я пытаюсь переопределить стиль границы по умолчанию (ширину и цвет) моего компонента React Bootstrap Tabs. В частности, у меня возникают трудности с активной вкладкой. На этом изображении показан пример границы, которой я пытаюсь манипулировать:...
Следующий код, добавленный в userChrome.css, больше не работает:
.tab-background {
background-color: #dd9933 !important;
background-image: none !important;
}
Буквально все, что я мог найти в Интернете, включая этот сайт и Reddit, рекомендовали...