マイクからの音声のみを録音するシンプルなWebアプリケーションを開発していますが、問題があります。
HTML5音声録音機能は、chromeおよびfirefoxデスクトップまたはAndroidで正常に機能します。しかし、iPhoneでモバイルブラウザを使用しているときは、chromeおよびfirefoxでも動作しません。
Recorder.jsを試しましたが、結果は変わりませんでした。
サファリで音声を録音することは可能ですか、それともサファリまたはiOSの機能がありませんか?
私の知る限り、最新のiOS(iOS 10)でも、HTML5を使用してiOSで音声を録音することはまだ不可能です。 iOSのすべてのブラウザーは、iOSのSafariも使用するUIWebViewの使用に制限されているため、iOSのChromeは、メディアの記録に使用できるAPIをサポートできません。
たとえば、使用したrecorder.jsはMedia Capture API上に構築されています。 caniuse.com をチェックすると、iOSでこのAPIがサポートされていないことがわかります。 (問題も確認してください here )。
MediaRecorder API も有望なAPIですが、Appleのブラウザでは サポートされていません です。
詳細については、以下の回答を確認してください。
1。 HTML5を使用してIPhoneから音声を録音する
2。 iOSでの音声録音html5
IOS11以降、SafariはMedia Capture APIをサポートするようになりました。
Safari 11.0の新機能–カメラとマイクへのアクセス。
Media Capture APIのサポートが追加されました。 Webサイトがユーザーのデバイスからカメラとマイクのストリームにアクセスする機能を追加しました(ユーザーの許可が必要です)。
Apple-2018年7月時点でリンク切れ) によるお知らせ
したがって、recorder.jsは現在動作します。
2018年5月の更新(すべての古い情報についてこれを理解するのは困難だったため).
それが可能であることを証明するこのデモを見つけました: https://kaliatech.github.io/web-audio-recording-tests/dist/#/test1
Safari11のiOS11でできるようになり、「簡単」になりました! mediaStream APIは現在サポートされています。ただし、mediaRecorder APIはそうではありません。これにより、既存のサンプルが機能しなくなります。したがって、メディアストリームをwebkitAudioContext ScriptProcessorNodeに接続し、ノードのonaudioprocessイベントでストリームバッファーを収集することにより、独自のmediaRecorder機能を実装する必要があります。その後、iOSマイクのストリーミングオーディオデータを収集して、必要な処理を行うことができます。ほとんどの場合、アップロード/ダウンロード用にwavファイルにマージします。これは、Media Stream APIをサポートするすべてのブラウザーで機能します。
2つの落とし穴:
-iOS Safariは、メインスレッドで(タップで)作成されなかったAudioContextの割り当てを解除するため、デバイスメディアアクセスで受け入れられたコールバックで初期化できません。
-scriptProccessorNodeは、何らかの理由で入力AND出力が接続されていない限り、audioprocessedイベントを起動しません。