解决Puppeteer内置的Chromium无法自动播放音频问题

简介: 解决Puppeteer内置的Chromium无法自动播放音频问题

(S97S)})SC3B`{~Z0I5@Z(R.png

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情


背景


以前做的一个基于 Wechaty 的客户端应用,最近更新个功能,涉及到提示语音的播放,由于要实现对附近人员的提醒,要求自动播放音频,可人工操作关闭。但是实际开发中,发现 Chrome 浏览器无法自动播放音频,经过查询,发现是 Chromium 本身做了限制。


版本信息:

  1. wechaty@0.14.1,puppeteer: ^1.2.0;
  2. 音频播放用的是jquery.jplayer.min.js

解决


这里场景比较特殊, 这个客户端就在用户的一台电脑上使用,那么只要想法解决这个客户端的问题就行了。 Wechaty 项目依赖了 Puppeteer ,其中内置了 Chromium ,那么按道理,应该可以通过修改源码配置的方式突破这一无法自动播放音频的限制。

经过查找依赖信息,终于找到了相关的配置,源码路径:node_modules\wechaty\dist\src\puppet-web\bridge.js,默认的浏览器初始化参数如下:


initBrowser() {
    return __awaiter(this, void 0, void 0, function*() {
        config_1.log.verbose('PuppetWebBridge', 'initBrowser()');
        const headless = this.options.head ? false : true;
        const browser = yield puppeteer_1.launch({
            headless,
            args: [
                '--audio-output-channels=0',
                '--disable-default-apps',
                '--disable-extensions',
                '--disable-translate',
                '--disable-gpu',
                '--disable-setuid-sandbox',
                '--disable-sync',
                '--hide-scrollbars',
                '--mute-audio',
                '--no-sandbox',
            ],
        });
        const version = yield browser.version();
        config_1.log.verbose('PUppetWebBridge', 'initBrowser() version: %s', version);
        return browser;
    });
}
按照下图进行配置(删掉参数:--mute-audio,增加参数:--autoplay-policy=no-user-gesture-required):

3724)}KF@OMJZ1M9($]Z_CX.png


即:--autoplay-policy=no-user-gesture-required,在启动参数中加上这个, 就可以自动播放音频了。


Note:其他场景:如果想直接在 GoogleChrome 浏览器上实现音频自动播放,那么可对浏览进行配置(可解决当前电脑 Chrome 浏览器的这一问题):

在浏览器输入: chrome://flags/#autoplay-policy ,将第一个配置项 Autoplay policy ,设置为 no user gesture is required ,重启浏览器生效。😊



If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

目录
相关文章
|
Web App开发 移动开发 JavaScript
JS - 微信浏览器(H5)语音录音插件(Recorder H5)
JS - 微信浏览器(H5)语音录音插件(Recorder H5)
1765 0
|
4月前
|
Web App开发 测试技术 API
playwright使用:启动浏览器与多种运行方式
本文介绍了Playwright,一个用于浏览器自动化的强大工具,支持Chrome、Firefox和WebKit。展示了如何同步和异步启动浏览器,以及使用`with`语句和`start/stop`方法。通过设置`headless=False`可显示浏览器界面。Playwright的等待机制不同于Selenium,采用`slow_mo`全局减速或`wait_for_timeout`进行等待。文章还展示了填写表单和点击元素的示例,并预告下文将讨论元素定位方法。
196 6
|
4月前
|
Java 测试技术 Python
Selenium帮助你轻松实现浏览器多窗口操作
Selenium帮助你轻松实现浏览器多窗口操作
164 0
|
Web App开发 开发者
Google Chrome浏览器怎么开启查看帧率功能?
Google Chrome浏览器怎么开启查看帧率功能?
1011 0
Google Chrome浏览器怎么开启查看帧率功能?
|
移动开发 JavaScript Android开发
通过howler.js实现在Android下的微信浏览器自动播放音频
通过howler.js实现在Android下的微信浏览器自动播放音频
498 0
通过howler.js实现在Android下的微信浏览器自动播放音频
|
数据采集 编解码 移动开发
Puppeteer + Nodejs 通用全屏网页截图方案(二)常用参数实现
学习如何对网页截图程序设计基本参数功能。
|
Web App开发 内存技术
允许chrome浏览器运行flash
允许chrome浏览器运行flash
138 0
允许chrome浏览器运行flash
|
数据采集 Web App开发 JavaScript
PhantomJS、Puppeteer、SlimerJS网页截屏
PhantomJS、Puppeteer、SlimerJS网页截屏
|
JavaScript 前端开发 开发者
介绍一下主流的浏览器的开发者工具(js调试和查看网络请求)
介绍一下主流的浏览器的开发者工具(js调试和查看网络请求)
360 0
介绍一下主流的浏览器的开发者工具(js调试和查看网络请求)
|
Web App开发
Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息。
Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息。
1595 0
Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息。