2016-04-11 144 views
2

我试图共享我的屏幕并记录它,但问题是,当我选择流的来源,它不启动流,它只显示窗口与屏幕和窗口选项来分享,但选择之后,我检查了我得到的ChromeMediaSource和ChromeMediaSourceID,但正如我所说,分享的对话不会出现,因此我不能记录任何东西。无法与我的Chrome扩展

这是一个错误,我发现调试未登录到控制台:

" at chrome-extension://mnoggiilghljimfhpghalhngdciecafi/background.js:16:31" 

这是在“chrome.desktopCapture.chooseDesktopMedia”的背景文件

,这是我的背景文件

background.js

chrome.runtime.onConnect.addListener(function(port){ 
    // listen for messages from the port 

    port.onMessage.addListener(function(message){ 
     // send back a "pending" answer on the port 
     port.postMessage({ 
      "answer": 1, 
      "state": "pending", 
      "requestId": message.requestId 
     }); 
     chrome.desktopCapture.chooseDesktopMedia(["screen", "window"], port.sender.tab, function(id){ 


      var response = { 
       "answer": 1, 
       "state": "completed", 
       "requestId": message.requestId, 
       "streamId": id || undefined 
      }; 

      // send back a "completed" answer on the port 
      port.postMessage(response); 
     }); 
    }); 
}); 

这是个文件在其加载到该网站使用扩展

bridge.js

// open a port to communicate with background 
var port = chrome.runtime.connect(); 

// create node 
var node = document.createElement('div'); 

// listen for messages from webpage and forward them to the background, through the previously opened port 
window.addEventListener('message', function (event){ 
    if (event.source != window || !event.data){ 
     return; 
    } 
    // prevent to return answer to the background 
    if(event.data.answer){ 
     return; 
    } 

    port.postMessage(event.data); 

}); 

// listen for messages from background and forward them to the webpage 
port.onMessage.addListener(function(data){ 
    window.postMessage(data, '*'); 
}); 

// insert tag into parent page 
node.id = 'extension-screensharing-installed'; 
document.body.appendChild(node); 

manifest.js

{ 
    "name": "extension name", 
    "description": "This extension allows you to share your screen", 
    "version": "0.1", 
    "manifest_version": 2, 
    "minimum_chrome_version": "34", 
    "icons": { 
    "16": "img16.png", 
    "48": "img48.png", 
    "128": "img128.png" 
    }, 
    "background": { 
    "scripts": ["background.js"] 
    }, 
    "content_scripts": [ { 
    "js": [ "bridge.js" ], 
    "matches": [ 
     "https://*/tester" 
     ] 
    } ], 
    "permissions": [ 
    "desktopCapture", 
    "https://*/tester" 
    ] 
} 

难道是错误的东西在我的代码? 我不完全明白调试发现的错误

谢谢!

编辑:添加manifest.json文件!

+0

您能否也请提供其他相关文件,例如'manifest.json',这对我们来说很有帮助,可以创建扩展并开始调试? –

+0

哎呀!忘了那个! 唯一相关的文件丢失是manifest.json – AbdulHamid

+0

事实上,我不清楚你想要使用上面的代码,用户点击共享按钮后,下一步是什么?我没有使用'chrome.desktopCapture'的经验,但[this](https://github.com/wpp/Scr​​eenStream)会有帮助吗? –

回答

1

Developing a Chrome screen-sharing extension包括上显影的扩展,其中用于apiKeysessionIdtoken值输入和还用于OT.registerScreenSharingExtension()方法注册屏幕共享扩展指令和示例代码。

// API key and generate a test session ID and token: 
    var apiKey = "<YOUR_API_KEY>"; 
    var sessionId = "<YOUR_SESSION_ID>"; 
    var token  = "<YOUR_TOKEN>"; 

    var session = OT.initSession(apiKey, sessionId); 

    session.connect(token, function(error) { 
     var publisher = OT.initPublisher('camera'); 
     session.publish(publisher, function() { 
     screenshare(); 
     }); 
    }); 

    session.on('streamCreated', function(event) { 
     session.subscribe(event.stream); 
    }); 

    OT.registerScreenSharingExtension('chrome', '<YOUR_CHROME_EXTENSION_ID>', 2); 

而对于记录的一部分,你可以检查他们如何在Screensharing with WebRTC做到了。希望能帮助到你!

+0

感谢您的回答,在尝试使用这个库之后,我意识到它也不能正常工作,所以经过一段巨大的代码审查之后,我发现我在mediaConstraints对象上有一个错字,它现在可以在两个扩展中使用! – AbdulHamid