安卓端Chrome的--use-file-for-fake-video-capture标识不生效如何解决?
问题根因
NotFoundError报错核心为安卓Chrome沙箱权限限制:即便文件路径合法、命令行参数成功加载,Chrome进程默认无权限读取公共存储目录下的自定义y4m文件,导致假视频流加载失败。
解决方案
- 第一步:授予Chrome完整存储权限
进入系统设置「应用- Chrome - 权限- 文件和媒体」,选择允许管理所有文件。已root设备也可直接执行以下命令完成授权:pm grant com.android.chrome android.permission.READ_EXTERNAL_STORAGE pm grant com.android.chrome android.permission.WRITE_EXTERNAL_STORAGE - 第二步:将y4m文件移入Chrome私有目录
为避免公共存储权限冲突,将example.y4m移入Chrome专属沙箱缓存目录,路径为/data/data/com.android.chrome/cache/example.y4m。已root设备可直接通过文件管理器操作,完成后执行以下命令修改文件所有者:# 先通过ps -A | grep chrome查询Chrome进程对应的uid,替换下方XXX chown u0_aXXX:u0_aXXX /data/data/com.android.chrome/cache/example.y4m - 第三步:修改命令行参数
更新/data/local/tmp/chrome-command-line中的视频路径参数:_ --use-fake-device-for-media-stream --use-fake-ui-for-media-stream --use-file-for-fake-video-capture=/data/data/com.android.chrome/cache/example.y4m - 第四步:重启Chrome验证
完全杀掉Chrome所有后台进程后重新打开,调用getUserMedia()即可读取指定视频流。
补充注意:若仍加载失败,可检查y4m文件参数,安卓Chrome暂不支持分辨率高于1080P、帧率高于30fps的y4m文件,可优先用低规格测试文件验证。
内容的提问来源于stack exchange,提问作者Deepak Divya Tejaswi
相关产品推荐
相关产品推荐

