You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PrimeFaces 6.2 p:photocam组件在Chrome中失效问题咨询

解决PrimeFaces 6.2 p:photocam在Chrome中失效的问题

这个问题的根源很明确:Chrome从版本68开始弃用了URL.createObjectURL()处理媒体流的方式,强制要求使用HTMLMediaElement.srcObject,但PrimeFaces 6.2自带的photocam.js还在依赖旧API,导致无法正常捕获摄像头画面。你可以通过以下两种方式继续复用这个组件:

方法一:自定义覆盖photocam.js文件(无需升级PrimeFaces)

PrimeFaces支持通过项目内的资源文件覆盖框架自带的资源,步骤非常简单:

  1. 在你的项目webapp/resources/primefaces/photocam/路径下创建photocam.js文件(如果对应目录不存在,手动新建即可)。

  2. 找到原photocam.js中处理媒体流的handleStream方法,原代码大概是这样:

    handleStream: function(stream) {
        this.stream = stream;
        this.video.src = URL.createObjectURL(stream);
        URL.revokeObjectURL(this.video.src);
        this.video.play();
    }
    
  3. 将其替换为使用srcObject的版本:

    handleStream: function(stream) {
        this.stream = stream;
        this.video.srcObject = stream;
        this.video.play();
    }
    

    这里可以去掉URL.revokeObjectURL()的调用,因为使用srcObject时,浏览器会自动管理资源释放,不需要手动操作。

  4. 重启你的Web应用,刷新Chrome浏览器后测试组件功能,应该就能正常捕获摄像头画面了。

方法二:升级PrimeFaces到修复该问题的版本

如果项目允许升级框架,你可以将PrimeFaces升级到6.2.13及以上版本(或者直接升级到7.0+),官方在后续版本中已经修复了这个Chrome兼容性问题,升级后无需手动修改代码就能正常使用p:photocam组件。

内容的提问来源于stack exchange,提问作者Rafael Bomfim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:48:05