<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Node.js 操作 OSX 系統麥克風、揚聲器音量

      最近幾年 Electron 很火,公司也正好有個項目想做跨平臺客戶端,大家研究了一下就選擇了 Electron,第一次做 js 的項目遇到了不少坑,不過也都一點點解決了。

      因為項目中需要對用戶錄音,HTML5 中的 API 又不支持調整麥克風音量,所以就對 Node js 操作 osx 系統麥克風、揚聲器音量了解了一下,一開始在 npm 中找了很多包都是只能操作揚聲器音量的,無法操作麥克風的音量,本來已經打算放棄了,缺無意間在網上看到 osx 系統下有自己的腳本——AppleScript,查看了官方文檔之后發現 AppleScript 確實可以控制系統的音量,由于自己完全不懂 AppleScript,只能在 npm 尋找是否有現成的解決方案,終于在 npm 中搜索一番找到了 osx-volume-controls 這個包,經過改造終于實現了這個功能。

      在 OS X 系統中測試一下設置揚聲器和麥克風音量:

      set volume output volume %s --100%
      set volume input volume %s --100%
      

      設置揚聲器和麥克風音量

      獲取系統的音量信息:

      input volume of (get volume settings) & output volume of (get volume settings) & output muted of (get volume settings)
      

      獲取系統的音量信息

      osx-volume-controls 要依賴到 applescript 這個包,執行下面的命令安裝到項目中:

       npm i -save applescript 
      

      具體類實現代碼如下:

      var applescript = require("applescript");
      
      var scripts = {
        state: "input volume of (get volume settings) & output volume of (get volume settings) & output muted of (get volume settings)",
        volumeState: "output volume of (get volume settings)",
        inputState: "input volume of (get volume settings)",
        outputState: "output volume of (get volume settings)",
        muteState: "output muted of (get volume settings)",
        setOutput: "set volume output volume %s --100%",
        setInput: "set volume input volume %s --100%",
        increase: "set volume output volume (output volume of (get volume settings) + 10) --100%",
        decrease: "set volume output volume (output volume of (get volume settings) - 10) --100%",
        mute: "set volume with output muted",
        unmute: "set volume without output muted"
      };
      
      var exec = function (script, callback) {
        if (!callback) callback = function () {};
        applescript.execString(script, callback);
      };
      
      var getScript = function (scriptName, param) {
        var script = scripts[scriptName];
        if (typeof param !== "undefined") script = script.replace("%s", param);
        return script;
      };
      
      exports.state = function (callback) {
        return exec(getScript("state"), callback);
      };
      
      exports.volumeState = function (callback) {
        return exec(getScript("volumeState"), callback);
      };
      
      exports.inputState = function (callback) {
        return exec(getScript("inputState"), callback);
      };
      
      exports.outputState = function (callback) {
        return exec(getScript("outputState"), callback);
      };
      
      exports.muteState = function (callback) {
        return exec(getScript("muteState"), callback);
      };
      
      exports.setOutput = function (volume, callback) {
        return exec(getScript("setOutput", volume), callback);
      };
      
      exports.setInput = function (volume, callback) {
        return exec(getScript("setInput", volume), callback);
      };
      
      exports.increase = function (callback) {
        return exec(getScript("increase"), callback);
      };
      
      exports.decrease = function (callback) {
        return exec(getScript("decrease"), callback);
      };
      
      exports.mute = function (callback) {
        return exec(getScript("mute"), callback);
      };
      
      exports.unmute = function (callback) {
        return exec(getScript("unmute"), callback);
      };
      
      

      使用方法(可以參照 osx-volume-controls 的文檔):

          import volume from "../../utils/osxVolume.js";
          volume.setInput(volumecontrol);
      
      posted @ 2018-11-26 15:21  Charles Zhang  閱讀(1667)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品揄拍自拍首页一| 韩国无码AV片午夜福利| 国产大尺度一区二区视频| A三级三级成人网站在线视频| 亚洲综合区激情国产精品| 91福利国产午夜亚洲精品| 中文日产幕无线码一区中文| 国产在线永久视频| 一区二区三区四区精品黄| 欧美牲交a欧美牲交aⅴ图片| 亚洲AV日韩精品久久久久| 国产精品午夜剧场免费观看| 欧洲精品色在线观看| 久久人妻夜夜做天天爽| 最新国产麻豆AⅤ精品无码| 国产福利社区一区二区| 五原县| 亚洲成人av综合一区| 亚洲av综合色区在线观看| 美欧日韩一区二区三区视频| 18禁无遮挡啪啪无码网站| 久久精品夜夜夜夜夜久久| 亚洲欧美人成电影在线观看| 老熟妇国产一区二区三区 | 欧美一区二区三区成人久久片 | 国产毛a片啊久久久久久保和丸| 成人亚洲精品一区二区三区| 亚洲成av人片无码天堂下载| 精品国产欧美一区二区三区在线| 秋霞人妻无码中文字幕| 久久精品一区二区东京热| 色五月丁香六月欧美综合| 国产亚洲综合一区二区三区 | 中文无码乱人伦中文视频在线| 精品久久人人妻人人做精品 | 泰州市| 日韩中文字幕有码av| 日本免费一区二区三区日本| 日韩人妻少妇一区二区三区| 干老熟女干老穴干老女人| 日韩 高清 无码 人妻|