如何将HoloLens 2的相机预览流串流到PC端UWP应用?
可行实现方案
方案1:基于UDP/RTP的低延迟自定义串流
无需依赖额外采集设备,完全在应用层实现编解码和传输,可控性最高:
- HoloLens端:获取相机预览返回的
SoftwareBitmap后,调用Windows.Media.Encoding命名空间下的H.264硬件编码器完成编码,HoloLens2自带硬件编码加速,单帧编码延迟可控制在50ms以内;编码生成的NAL单元直接通过UDP Socket发送到PC端指定端口 - PC端:UWP应用监听对应UDP端口,收到NAL单元后调用硬件解码器解码,解码得到的
SoftwareBitmap直接渲染到UI控件即可 - 优化建议:编码配置关闭B帧、GOP大小设置为10帧以内,禁用帧缓存,实测端到端延迟可控制在200ms以内
- 权限要求:两端UWP都需要开启
Internet (Client & Server)、Private Networks (Client & Server)能力,设备IP可以通过UDP广播或者蓝牙预配对完成交换
方案2:基于MediaCast API的流共享
无需自行实现编解码逻辑,代码量最少,适配难度低:
- HoloLens端:拿到相机预览对应的
MediaCapture实例后,创建MediaCastSource并绑定到MediaCaster,直接将预览流发布到本地网络指定地址 - PC端:UWP应用直接使用
MediaPlayer加载对应流地址即可播放,无需额外采集设备,微软官方测试端到端延迟在150ms-300ms区间
原有WebRTC方案修复方法
你遇到的PeerConnection初始化异常是因为示例代码默认会尝试枚举本地音视频采集设备,PC无对应设备时就会触发报错,可以通过修改配置绕过采集要求:
- 初始化
PeerConnection时,不添加本地音频、视频采集轨道,直接将PC端设置为纯接收模式,仅拉取HoloLens端推送的媒体流即可,不需要PC端配备采集设备 - 修复后WebRTC方案也可正常使用,端到端延迟可控制在100ms左右
内容的提问来源于stack exchange,提问作者Xiink
相关产品推荐
相关产品推荐

