Как передать объект MediaStream (popup. js) в content_scripts?
popup. js это мой javascript, включенный в мой html файл из "browser_action" в манифесте. json
manifest. json
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html",
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"css": ["content-style.css"],
"js": ["content.js", "fontawesome.js"]
}
],
"permissions": ["tabs", "desktopCapture", "tabCapture"]
Я хочу сделать расширение chrome, которое записывает текущую вкладку пользователя. Я могу захватить вкладку во всплывающем окне. js сторона. Я пробовал использовать sendMessage, но думаю, что он может принимать только простые объекты.
popup. js
chrome.tabCapture.capture({audio: true, video: true}, function(tab){
console.log(tab); // MediaStream that I needed
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
let msg = {
actionMessage: 'popup-open'
};
chrome.tabs.sendMessage(tabs[0].id, msg);
});
});
content_scripts. js
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.actionMessage === 'popup-open') {
// do something and start recording
}
});
сегодня я использую приведенный ниже код в своих content_scripts. js, но единственная вкладка, которую мне нужно записать, это вкладка, которая вызывает расширение.
let tabStream = await navigator.mediaDevices.getDisplayMedia({ video: true, audio: true });
Мне нужно, чтобы это было MediaStream, который я получил из своего всплывающего окна. js, поэтому мне не нужно просить пользователя всегда делиться текущей вкладкой экрана.
Я видел, что у каждого MediaStream есть идентификатор (ha sh) , не знаю, можно ли использовать это для захвата медиапотока в моих content_scripts.
Можно ли это сделать, или мне нужно сгенерировать всю запись во всплывающем или фоновом скрипте?