HTML5의 WebRTC 새로운 기능에 대한 자세한 설명
1. 개요
WebRTC는 "Web Real Time Communication"의 약어로, 주로 브라우저가 동영상, 오디오 및 데이터.
WebRTC는 세 가지 API로 나누어집니다.- MediaStream(일명 getUserMedia)
- RTCPeerConnection
- RTCDataChannel
소개
먼저 브라우저가 getUserMedia 메소드를 지원하는지 확인하세요.navigator.getUserMedia || (navigator.getUserMedia = navigator.mozGetUserMedia || navigator.webkitGetUserMedia || navigator.msGetUserMedia); if (navigator.getUserMedia) { //do something } else { console.log('your browser not support getUserMedia'); }
getUserMedia(streams, success, error);
- 스트림: 어떤
멀티미디어 장치에 객체
<가 포함되어 있는지 나타냅니다. 🎜> 성공: - 콜백 함수 오류: 콜백 함수, 멀티미디어 장치를 얻지 못했을 때 호출
- 사용법은 다음과 같습니다.
navigator.getUserMedia({ video: true, audio: true}, onSuccess, onError);
위 코드는 카메라와 마이크에서 실시간 정보를 얻는 데 사용됩니다.
웹페이지에서 getUserMedia를 사용하는 경우 브라우저는 사용자에게 정보 제공 여부를 묻습니다. 사용자가 거부하면 onError 콜백 함수가 호출됩니다.
오류가 발생하면 콜백
함수의매개변수는 Error 개체이며, 여기에는 다음 값을 갖는 코드 매개변수가 있습니다.
- PERMISSION_DENIED: 사용자가 정보 제공을 거부합니다.
- NOT_SUPPORTED_ERROR: 브라우저가 지정된 미디어 유형을 지원하지 않습니다.
- MANDATORY_UNSATISHIED_ERROR: 지정된 미디어 유형이 미디어 스트림을 수신하지 못했습니다.
- 2.2 카메라 이미지 표시
사용자의 카메라로 촬영한 이미지를 웹 페이지에 표시하려면 먼저 웹 페이지에 비디오 요소를 배치해야 합니다. 이 요소에는 이미지가 표시됩니다.
<video id="webcam"></video>
그런 다음 코드를 사용하여 이 요소를 가져옵니다.
function onSuccess(stream) { var video = document.getElementById('webcam'); //more code}
마지막으로 이 요소의 src
속성을 데이터 스트림에 바인딩하면 카메라에서 캡처한 이미지를 표시할 수 있습니다. function onSuccess(stream) {
var video = document.getElementById('webcam');
if (window.URL) {
video.src = window.URL.createObjectURL(stream);
} else {
video.src = stream;
}
video.autoplay = true; //or video.play();}
2.3 마이크 사운드 캡처
브라우저를 통해 사운드를 캡처하는 것은 비교적 복잡하며 Web Audio API를 사용해야 합니다.
function onSuccess(stream) { //创建一个音频环境对像 audioContext = window.AudioContext || window.webkitAudioContext; context = new audioContext(); //将声音输入这个对像 audioInput = context.createMediaStreamSources(stream); //设置音量节点 volume = context.createGain(); audioInput.connect(volume); //创建缓存,用来缓存声音 var bufferSize = 2048; // 创建声音的缓存节点,createJavaScriptNode方法的 // 第二个和第三个参数指的是输入和输出都是双声道。 recorder = context.createJavaScriptNode(bufferSize, 2, 2); // 录音过程的回调函数,基本上是将左右两声道的声音 // 分别放入缓存。 recorder.onaudioprocess = function(e){ console.log('recording'); var left = e.inputBuffer.getChannelData(0); var right = e.inputBuffer.getChannelData(1); // we clone the samples leftchannel.push(new Float32Array(left)); rightchannel.push(new Float32Array(right)); recordingLength += bufferSize; } // 将音量节点连上缓存节点,换言之,音量节点是输入 // 和输出的中间环节。 volume.connect(recorder); // 将缓存节点连上输出的目的地,可以是扩音器,也可以 // 是音频文件。 recorder.connect(context.destination); }
3. 실시간 데이터 교환
WebRTC의 다른 두 API인 RTCPeerConnection은 브라우저 간의 지점 간 연결에 사용되며 RTCDataChannel은 지점 간 연결에 사용됩니다. 데이터 통신.
RTCPeerConnection에는 Chrome 브라우저의 경우 webkitRTCPeerConnection, Firefox 브라우저의 경우 mozRTCPeerConnection이라는 브라우저 접두사가 있습니다. Google은 브라우저 간의 차이점을 추상화하기 위해 함수 라이브러리 Adapter.js를 유지관리합니다.
var dataChannelOptions = { ordered: false, // do not guarantee order maxRetransmitTime: 3000, // in milliseconds}; var peerConnection = new RTCPeerConnection(); // Establish your peer connection using your signaling channel herevar dataChannel = peerConnection.createDataChannel("myLabel", dataChannelOptions); dataChannel.onerror = function (error) { console.log("Data Channel Error:", error); }; dataChannel.onmessage = function (event) { console.log("Got Data Channel Message:", event.data); }; dataChannel.onopen = function () { dataChannel.send("Hello World!"); }; dataChannel.onclose = function () { console.log("The Data Channel is Closed"); };
4. 참조 링크
[1] Andi Smith, WebRTC 시작하기
[2] Thibault Imbert, getUserMedia 및 웹 오디오를 사용하여 마이크에서 .WAV로
[3] Ian Devlin,
HTML5비디오 및 캔버스 요소와 함께 getUserMedia API 사용[4] Eric Bidelman, 오디오 캡처 및 HTML5 비디오
[5] Sam Dutton, WebRTC 시작하기
[6] Dan Ristic, WebRTC 데이터 채널
[7] Ruanyf, WebRTC
위 내용은 HTML5의 WebRTC 새로운 기능에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

HTML의 테이블 테두리 안내. 여기에서는 HTML의 테이블 테두리 예제를 사용하여 테이블 테두리를 정의하는 여러 가지 방법을 논의합니다.

HTML의 Nested Table에 대한 안내입니다. 여기에서는 각 예와 함께 테이블 내에 테이블을 만드는 방법을 설명합니다.

HTML 여백-왼쪽 안내. 여기에서는 HTML margin-left에 대한 간략한 개요와 코드 구현과 함께 예제를 논의합니다.

HTML 테이블 레이아웃 안내. 여기에서는 HTML 테이블 레이아웃의 값에 대해 예제 및 출력 n 세부 사항과 함께 논의합니다.

HTML 입력 자리 표시자 안내. 여기서는 코드 및 출력과 함께 HTML 입력 자리 표시자의 예를 논의합니다.

HTML 순서 목록에 대한 안내입니다. 여기서는 HTML Ordered 목록 및 유형에 대한 소개와 각각의 예에 대해서도 설명합니다.

HTML onclick 버튼에 대한 안내입니다. 여기에서는 각각의 소개, 작업, 예제 및 다양한 이벤트의 onclick 이벤트에 대해 설명합니다.

HTML에서 텍스트 이동 안내. 여기서는 Marquee 태그가 구문과 함께 작동하는 방식과 구현할 예제에 대해 소개합니다.
