web-dev-qa-db-ja.com

SafariとHTML5を使用したiPhoneでの音声録音

マイクからの音声のみを録音するシンプルなWebアプリケーションを開発していますが、問題があります。

HTML5音声録音機能は、chromeおよびfirefoxデスクトップまたはAndroidで正常に機能します。しかし、iPhoneでモバイルブラウザを使用しているときは、chromeおよびfirefoxでも動作しません。

Recorder.jsを試しましたが、結果は変わりませんでした。

サファリで音声を録音することは可能ですか、それともサファリまたはiOSの機能がありませんか?

11

私の知る限り、最新の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

11
choasia

IOS11以降、SafariはMedia Capture APIをサポートするようになりました。

Safari 11.0の新機能–カメラとマイクへのアクセス。

Media Capture APIのサポートが追加されました。 Webサイトがユーザーのデバイスからカメラとマイクのストリームにアクセスする機能を追加しました(ユーザーの許可が必要です)。

Apple-2018年7月時点でリンク切れ) によるお知らせ

誰かのブログのお知らせのコピー

したがって、recorder.jsは現在動作します。

11
K48

2018年5月の更新(すべての古い情報についてこれを理解するのは困難だったため).

それが可能であることを証明するこのデモを見つけました: https://kaliatech.github.io/web-audio-recording-tests/dist/#/test1

8
haberdasher

Safari11のiOS11でできるようになり、「簡単」になりました! mediaStream APIは現在サポートされています。ただし、me​​diaRecorder APIはそうではありません。これにより、既存のサンプルが機能しなくなります。したがって、メディアストリームをwebkitAudioContext ScriptProcessorNodeに接続し、ノードのonaudioprocessイベントでストリームバッファーを収集することにより、独自のmediaRecorder機能を実装する必要があります。その後、iOSマイクのストリーミングオーディオデータを収集して、必要な処理を行うことができます。ほとんどの場合、アップロード/ダウンロード用にwavファイルにマージします。これは、Media Stream APIをサポートするすべてのブラウザーで機能します。

2つの落とし穴:
-iOS Safariは、メインスレッドで(タップで)作成されなかったAudioContextの割り当てを解除するため、デバイスメディアアクセスで受け入れられたコールバックで初期化できません。
-scriptProccessorNodeは、何らかの理由で入力AND出力が接続されていない限り、audioprocessedイベントを起動しません。

7

IOS 11のSafariは、オーディオ(のみ)の録音を可能にする(そして実装しやすい)2つの標準をサポートしていません。

  • HTML Media Captureオーディオ用( spec正しい構文 )-オーディオ録音を渡す必要がありますアップロードのために結果をブラウザに返す必要があるネイティブアプリ(ビデオと画像で機能します)
  • MediaStream Recording APIspecdemo )-blobに直接記録できますブラウザ。記録は、Webサーバーにダウンロードまたはアップロードできます。
1
Octavian Naicu