<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 從 iOS 模擬器和真機中捕獲語音 ### 客戶端側 API 從 Appium 1.18.0 開始,就可以在 iOS 上錄制語音并在客戶端側將語音保存到文件中去。蘋果并未提供 任何可以直接從模擬器或者真機中獲取語音流的接口。但是我們可以將語音流重定向到宿主機器上,這樣就可以捕獲語音流了。 #### mobile: startAudioRecording 根據給定的語音壓縮參數,開始在指定的主機上錄制語音。 #### 支持的參數 * _audioInput_: 用來捕獲語音的輸入設備名字,比如 `:1`。在終端使用 `ffmpeg -f avfoundation -list_devices true -i ""`命令可以列出所有的捕獲設備。該參數為必填參數。 * _audioCodec_: 語音解碼器的名字. 默認是`aac`。 * _audioBitrate_: 語音流的碼率,默認是`128k`。 * _audioChannels_: 生成的語音流的聲道數量。設置為 `1` 就會創建單聲道的語音流。默認是 `2`。 * _audioRate_: 采樣率。默認 `44100`。 * _timeLimit_: 最長錄音時間,單位秒。默認是 `180`,最長為 `43200` (12 hours)。 * _forceRestart_: 當調用 startRecordingAudio 時,是否要強制重啟語音錄制過程,或者忽略該調用,直到當前語音錄制完成。默認是 `false`,即不強制重啟。 #### mobile: stopAudioRecording 停止語音錄制流程(之前通過調用startAudioRecording啟動)。stopAudioRecording 方法的返回結果是一個base64位編碼的 .mp4 文件,該文件錄制了從 `startAudioRecording` 調用開始的語音。如果之前`startAudioRecording`沒有調用過,會產生一個空字符串。 #### 示例 ```java // Java driver.executeScript("mobile: startAudioRecording", ImmutableMap.of("audioInput", ":1")); Thread.sleep(10000); byte[] mp4Data = Base64.getMimeDecoder() .decode((String) driver.executeScript("mobile: stopAudioRecording")); try (FileOutputStream fos = new FileOutputStream("out.mp4")) { fos.write(mp4Data); } ``` ```ruby # Ruby @driver.execute_script 'mobile: startAudioRecording', audioInput: ':0' sleep 10 base64_str = @driver.execute_script 'mobile: stopAudioRecording' File.write 'out.mp4', Base64.decode64(base64_str) ``` ```python # Python driver.execute_script('mobile: startAudioRecording', {'audioInput': ':1'}) time.sleep(10) base64_str = driver.execute_script('mobile: stopAudioRecording') with open('out.mp4', 'wb') as f: f.write(base64.b64decode(base64_str)) ``` ### 服務端所需配置 Appium 的版本需要大于等于 1.18.0。 宿主機必須安裝了 [FFMPEG](https://www.ffmpeg.org/download.html),并且該命令已經配置到系統路徑中去了。在 macOS 上,可以通過 [Brew](https://brew.sh/) 命令安裝:`brew install ffmpeg`。 macOS 從 10.15 開始,macOS需要可以錄制語音的應用必須顯示激活。激活路徑:System Preferences->Security & Privacy->Privacy->Microphone tab。 確保 FFMPEG 或者 Appium 進程 (比如 Terminal) 在激活列表中。 該功能有潛在的安全風險,所以必須在服務端側顯示允許。該功能的名字是 `audio_record`。更多細節參見[Security](/writing-running-appium/security.md) 。 ### 模擬器設置 在 iOS 模擬器上進行語音錄制,需要進行如下配置: * 安裝 [Soundflower](https://github.com/mattingalls/Soundflower/releases) * 將模擬器的語音輸出重定向到 Soundflower。 在 模擬器的主菜單選擇 I/O->Audio Output->Soundflower (2ch)。 * 在終端運行 `ffmpeg -f avfoundation -list_devices true -i ""` 得到 `Soundflower (2ch)` 的標識名字。這個標識使用 `:` 做為前綴。把這個標識作為 `audioInput` 的參數來調用 `mobile: startAudioRecording`。 * 測試你的配置是否生效。在模擬器里播放任意一個錄音,然后在終端執行該命令:`ffmpeg -t 5 -f avfoundation -i ":1" -c:a aac -b:a 128k -ac 2 -ar 44100 -y ~/Desktop/out.mp4`(注意-i的參數值需要設置為上一步得到的值)。5秒后,在你的桌面就會有一個 `out.mp4` 文件,該文件錄制了剛剛的語音。 ### 真機設置 在真機上進行語音錄制,需要進行如下配置: * 將你的真機設備和mac電腦鏈接。 * 運行 `open -a /System/Applications/Utilities/Audio\ MIDI\ Setup.app` ,啟動應用。 * 在列表中找到你的手機,然后點擊 `Enable`按鈕激活。 * 在終端運行 `ffmpeg -f avfoundation -list_devices true -i ""` ,在`AVFoundation audio devices`列表中找到手機的標識名字。這個標識使用 `:` 做為前綴。把這個標識作為 `audioInput` 的參數來調用 `mobile: startAudioRecording`。 * 測試你的配置是否生效。在手機里播放任意一個錄音,然后在終端執行該命令:`ffmpeg -t 5 -f avfoundation -i ":1" -c:a aac -b:a 128k -ac 2 -ar 44100 -y ~/Desktop/out.mp4`(注意-i的參數值需要設置為上一步得到的值)。5秒后,在你的桌面就會有一個 `out.mp4` 文件,該文件錄制了剛剛的語音。 蘋果不允許電話錄音重定向,所以你只能錄制應用或者系統的聲音。 ### 拓展閱讀 * https://github.com/appium/appium-xcuitest-driver/pull/1207 * https://www.macobserver.com/tips/quick-tip/iphone-audio-input-mac/ * http://www.lorisware.com/blog/2012/04/28/recording-iphone-emulator-video-with-sound/
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看