2017-02-14 84 views
8

마이크에서 음성 만 녹음하는 간단한 웹 응용 프로그램을 개발 중이지만 몇 가지 문제가 있습니다.Safari 및 HTML5를 사용하여 iPhone에서 음성 녹음

HTML5 음성 녹음 기능은 크롬 및 파이어 폭스 데스크톱 또는 안드로이드에서 잘 작동합니다. 하지만 크롬과 파이어 폭스와 같은 iPhone에서도 모바일 브라우저를 사용하는 것은 효과가 없습니다.

나는 recorder.js를 시도했지만 결과는 변경되지 않았습니다.

사파리에 음성을 녹음하는 것이 가능합니까 아니면 사파리 또는 iOS의 기능이 빠져 있습니까?

+0

이 접근법을 시도하십시오 https://developers.google.com/web/fundamentals/native-hardware/recording-audio/ – SMT

답변

8

내가 아는 한 최신 iOS (iOS 10)에서도 HTML5를 사용하여 iOS에 음성을 녹음하는 것은 여전히 ​​불가능합니다. iOS의 모든 브라우저는 iOS의 Safari가 사용하는 UIWebView를 사용하도록 제한되어 있으므로 iOS의 Chrome은 미디어 레코딩에 사용할 수있는 API를 지원할 수 없습니다.
예를 들어, 사용했던 recorder.js는 Media Capture API를 기반으로 작성됩니다. caniuse.com을 확인하면이 API는 iOS에서 지원되지 않습니다. (here) 문제를 확인하십시오.
MediaRecorder API도 유망한 API이지만 여전히 Apple 브라우저에서 not supported입니다.

자세한 내용은 아래에서 확인하십시오.
1. Record voice from IPhone using HTML5
2 Audio Recording html5 on iOS

+10

Safari는 새로운 IE입니다. – SMT

6

이 iOS11 때문에, 사파리는 이제 미디어 캡처 API 지원 : 사파리 11.0에서

새로운 기능 - 카메라 및 마이크에 액세스 할 수 있습니다.

Media Capture API에 대한 지원이 추가되었습니다. 사용자의 장치에서 카메라와 마이크 스트림에 액세스하는 웹 사이트에 대한 기능 추가 (사용자 권한이 필요합니다.)

https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Safari_11_0/Safari_11_0.html

따라서 recorder.js 지금 작동합니다.

+0

iOS11에서 오디오 녹음을 시도했지만 recorder.js가 작동하지 않습니다. – evtuhovdo

+1

K48, IOS11에서 recorder.js로 성공 했습니까? – visual

+0

@visual 불행히도 – K48

1

아이폰 OS (11)의 Safari 오디오 (전용) (구현하기 쉬운) 수를 기록 할 것 (2 개) 표준을 지원하지 않습니다 :

  • HTML 미디어 오디오 캡처 (spec, correct syntax) - 오디오 당신이 무서운 한방울에 기록 할 수 있습니다 - 녹음을 업로드 브라우저에 결과를 다시 통과해야 네이티브 응용 프로그램에 전달해야한다
  • 의 MediaStream 녹화 API (spec, demo) (그것은 비디오 및 사진을 작동) 브라우저에서 ctly. 녹음은 웹 서버에 다운로드하거나 업로드 할 수 있습니다.
5

이제 Safari에서 iOS11을 사용하는 것이 가능합니다. mediaStream API는 현재 지원됩니다. 그러나 mediaRecorder API는 그렇지 않습니다. 이로 인해 기존의 모든 예제가 작동하지 않게됩니다. 따라서 미디어 스트림을 webkitAudioContext ScriptProcessorNode에 연결하고 노드의 onaudioprocess 이벤트에 스트림 버퍼를 수집하여 자체 mediaRecorder 기능을 구현해야합니다.그런 다음 iOS 마이크로폰의 스트리밍 오디오 데이터를 수집하여 원하는대로 업로드/다운로드 할 수있는 wav 파일로 병합 할 수 있습니다. 이 기능은 Media Stream API를 지원하는 모든 브라우저에서 작동합니다.

두 잡았다의 :
- 아이폰 OS 사파리 (탭에) 주 스레드에서 만들어지지 않은 모든 AudioContext 할당을 해제 좋아하는 그래서 당신이 장치의 미디어 액세스 가능 콜백에 그것을 초기화 할 수 없습니다.
- scriptProccessorNode는 입력 및 출력이 어떤 이유로 연결되지 않은 경우 audioprocessed 이벤트를 발생시키지 않습니다.

+1

& | 이것을 보여주는 모든 코드에 링크 하시겠습니까? 나는 여전히 0이 아닌 길이의 오디오 데이터를 얻으려고 고심하고있다. – Xailor

+0

하나 더 많은 것을 잊지 말자 : AudioContext는 사용자 상호 작용 (예 : touchend, click, 등)시에만 생성 될 수 있습니다. –