我正在编写一个需要在主机窗口系统中显示本机窗口的Web应用程序。该窗口必须显示正在流式传输到Web应用程序的视频。
我为OS X编写了一个原生程序,以我需要的方式显示视频,而在Web应用程序中,我通过WebRTC发送了MediaStream
。我需要将它们连接在一起。
我想使用Chrome的本机消息传递,它允许我将JSON对象流式传输到本机程序。如果我可以从MediaStream
访问原始数据流,我应该能够将其转换为JSON对象,将它们传输到本机应用程序,在那里我可以重建原始视频流。
这样的事情可能吗?
答案 0 :(得分:3)
如果可能,我强烈建议在本机应用程序中实现WebRTC媒体服务器,并直接在浏览器的WebRTC API和服务器之间进行通信。其他任何东西都有更多的开销。
例如,要从MediaSource转到本机消息传递,您需要一种方法将MediaSource中的音频和视频源序列化为一系列字节,然后通过本机消息传递通道(将由JSON编码)进行发送。浏览器然后由您的原生应用程序进行JSON解码。
audioContext.createMediaStreamSource
从MediaStream
(从WebRTC)桥接到音频节点(在Web Audio API中),然后使用offlineAudioCtx.startRendering
进行转换音频节点到原始字节。toDataURL
或toBlob
来获取基础数据以通过网络发送。 (有关拍摄单张照片的教程,请参阅"Taking still photos with WebRTC" on MDN,这可以推广到多个帧)这听起来非常低效,而且可能是这样,因此您最好在原生应用中实施WebRTC媒体服务器以获得一些合理的性能。