我想了解如何最好地获取MediaStreamTrack
Chrome/Canary中音频javascript对象的麦克风活动级别.该MediaStreamTrack
对象是MediaStream
返回的音轨getUserMedia
,作为WebRTC javascript API的一部分.
我一直在尝试使用Qt Webkit在浏览器中呈现视频元素.我的所有帧都由C++应用程序(通过网络接收的源视频数据包)解码,我可以使用Qt在元素中显示视频,如下所述:QtWebEngine在DOM中渲染原生Qt小部件?但我受到Qt Webkit的z-index问题的限制:(
相反,我想知道以下任何一种情况是否可能,以及是否有人之前已经取得了这些成就.
我有一个C++应用程序,可以启动Chrome嵌入式框架窗口(基本上是一个浏览器窗口).我的C++应用程序有没有办法直接将视频呈现到浏览器窗口 - 使用webGL或类似的库?也许有一些方法我可以在C++应用程序中使用openGL写入显卡内存并让webGL读取显卡数据 - 如果存在这样的技术,这将是很棒的但我担心沙盒不会允许这样做.
例如
Browser webGL surface/object <--- C++ application <--- file/network data
Run Code Online (Sandbox Code Playgroud)
一个(非常!)天真的方法是浏览器窗口使用环回地址上的websocket连接到C++核心应用程序,websocket将表面流式传输到浏览器.然后可以将这些表面绘制到html5画布或由webGL使用 - 但这在延迟方面可能会很糟糕.
例如
Browser <--- websocket <--- C++ decode <--- file/network data
Run Code Online (Sandbox Code Playgroud)
非常感谢 - 任何其他我可以用于此代码示例的替代库的建议将非常感谢:)
我正在试用chrome.desktopCapture.chooseDesktopMedia
Chrome扩展程序,我可以得到一个桌面流就好了.
我使用以下内容将流转换blob:
为后台脚本中的-URL,如下所示:
var objectUrl = URL.createObjectURL(stream);
Run Code Online (Sandbox Code Playgroud)
我似乎无法解决的是如何将其设置为注入页面上视频元素的src属性.
我尝试了以下,每个都不起作用:
var video = document.getElementById("video");
var objectUrl = URL.createObjectURL(stream);
video.src = objectUrl;
Run Code Online (Sandbox Code Playgroud)
//objectUrl is a string received in a message from the background page by the content page
var video = document.getElementById("video");
video.src = objectUrl;
Run Code Online (Sandbox Code Playgroud)
我在javascript控制台中获得以下内容:
不允许加载本地资源:blob:chrome-extension:// panahgiakgfjeioddhenaabbacfmkclm/48ff3e53-ff6a-4bee-a1dd-1b8844591a91
如果我将消息中的URL一直发布到注入页面,我也会得到相同的结果.这有用吗?我真的很感激这里有任何建议.
在我的清单中我也有,
"web_accessible_resources": [ "*" ]
但这只是为了看它是否解决了这个问题(它没有).
google-chrome video-streaming google-chrome-extension screensharing
audio ×1
c++ ×1
canvas ×1
getusermedia ×1
javascript ×1
microphone ×1
opengl-es ×1
qt ×1
webgl ×1
webrtc ×1