我正在開發一個簡單的網絡應用程序,它只記錄麥克風的聲音,但我遇到了一些麻煩。使用Safari和HTML5在iPhone上錄音
HTML5語音錄製功能在Chrome和Firefox桌面或Android上運行良好。但在iPhone上使用移動瀏覽器甚至Chrome和Firefox時也不行。
我試過recorder.js,結果沒有改變。
是否可以在safari上錄製語音,或者它是safari或iOS的缺失功能?
我正在開發一個簡單的網絡應用程序,它只記錄麥克風的聲音,但我遇到了一些麻煩。使用Safari和HTML5在iPhone上錄音
HTML5語音錄製功能在Chrome和Firefox桌面或Android上運行良好。但在iPhone上使用移動瀏覽器甚至Chrome和Firefox時也不行。
我試過recorder.js,結果沒有改變。
是否可以在safari上錄製語音,或者它是safari或iOS的缺失功能?
就我所知,即使在最新的iOS(iOS 10)上,使用HTML5在iOS上錄製語音仍然是不可能的。由於iOS上的所有瀏覽器都限制使用iOS上的Safari,所以iOS上的Chrome無法支持任何可用於媒體錄製的API。
例如,您使用的recorder.js建立在Media Capture API上。如果您檢查caniuse.com,您會發現iOS不支持此API。 (同時檢查問題here)。
MediaRecorder API也是一個有前途的API,但仍然是蘋果瀏覽器的not supported。
查看下面的答案以獲取更多信息。
1. Record voice from IPhone using HTML5
2. Audio Recording html5 on iOS
Safari是新的IE瀏覽器。 – SMT
由於iOS11,Safari瀏覽器現在支持媒體捕獲API:
新的Safari 11.0 - 攝像頭和麥克風的訪問。
增加了對媒體捕獲API的支持。 添加到從用戶的 設備訪問攝像頭和麥克風流能力的網站(用戶權限是必需的。)
因此recorder.js將現在的工作。
Safari瀏覽器在iOS上11不支持2個標準,這將使音頻(只)記錄可能的(並且容易實現):
現在可以在Safari上輕鬆地做iOS11了! mediaStream API現在受支持。但mediaRecorder API不是。這會導致現有示例無法正常工作。因此,您必須通過將媒體流連接到webkitAudioContext ScriptProcessorNode並在節點的onaudioprocess事件中收集流緩衝區來實現自己的mediaRecorder功能。然後,您可以收集iOS麥克風的流式音頻數據,並根據需要進行處理,最有可能將其合併到上傳/下載的wav文件中。這適用於支持媒體流API的任何瀏覽器。
兩個疑難雜症的:
- iOS設備的Safari喜歡解除分配,這不是在主線程創建(在TAP)任何AudioContext所以你不能初始化它的設備的媒體訪問接受回調。
- scriptProccessorNode不會觸發任何audioprocessed事件,除非輸入AND輸出由於某種原因而連接。
您是否可以發佈&|鏈接到任何代碼證明這一點?我仍然在努力獲得非零長度的音頻數據。 – Xailor
不要忘記一個問題:只能在用戶交互時創建AudioContext(即,觀看,點擊等) –
試試這種方法https://developers.google.com/web/fundamentals/native-hardware/recording-audio/ – SMT