목차
1. 개요
사용자의 카메라로 촬영한 이미지를 웹 페이지에 표시하려면 먼저 웹 페이지에 비디오 요소를 배치해야 합니다. 이 요소에는 이미지가 표시됩니다.
브라우저를 통해 사운드를 캡처하는 것은 비교적 복잡하며 Web Audio API를 사용해야 합니다.
WebRTC의 다른 두 API인 RTCPeerConnection은 브라우저 간의 지점 간 연결에 사용되며 RTCDataChannel은 지점 간 연결에 사용됩니다. 데이터 통신.
[1] Andi Smith, WebRTC 시작하기
웹 프론트엔드 H5 튜토리얼 HTML5의 WebRTC 새로운 기능에 대한 자세한 설명

HTML5의 WebRTC 새로운 기능에 대한 자세한 설명

Mar 30, 2017 am 11:27 AM

1. 개요

WebRTC는 "Web Real Time Communication"의 약어로, 주로 브라우저가 동영상, 오디오 및 데이터.

WebRTC는 세 가지 API로 나누어집니다.

  • MediaStream(일명 getUserMedia)

  • RTCPeerConnection

  • RTCDataChannel

getUserMedia는 주로 비디오 및 오디오 정보를 얻는 데 사용되며 후자의 두 API는 브라우저 간의 데이터 교환에 사용됩니다.

2.getUserMedia

2.1

소개

먼저 브라우저가 getUserMedia 메소드를 지원하는지 확인하세요.

navigator.getUserMedia || 
    (navigator.getUserMedia = navigator.mozGetUserMedia ||  navigator.webkitGetUserMedia || navigator.msGetUserMedia);

if (navigator.getUserMedia) {
    //do something
} else {
    console.log('your browser not support getUserMedia');
}
로그인 후 복사

Chrome 21, Opera 18 및 Firefox 17은 현재 이 방법을 지원하지 않습니다. 위 코드의 msGetUserMedia는 향후 호환성을 보장하기 위한 것입니다.

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(&#39;webcam&#39;);    
//more code}
로그인 후 복사

마지막으로 이 요소의 src

속성

을 데이터 스트림에 바인딩하면 카메라에서 캡처한 이미지를 표시할 수 있습니다.

주요 목적은 사용자가 카메라를 사용하여 자신의 사진을 찍을 수 있도록 하는 것입니다.

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(&#39;recording&#39;);        
        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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

HTML의 테이블 테두리 HTML의 테이블 테두리 Sep 04, 2024 pm 04:49 PM

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

HTML의 중첩 테이블 HTML의 중첩 테이블 Sep 04, 2024 pm 04:49 PM

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

HTML 여백-왼쪽 HTML 여백-왼쪽 Sep 04, 2024 pm 04:48 PM

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

HTML 테이블 레이아웃 HTML 테이블 레이아웃 Sep 04, 2024 pm 04:54 PM

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

HTML 입력 자리 표시자 HTML 입력 자리 표시자 Sep 04, 2024 pm 04:54 PM

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

HTML 정렬 목록 HTML 정렬 목록 Sep 04, 2024 pm 04:43 PM

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

HTML 온클릭 버튼 HTML 온클릭 버튼 Sep 04, 2024 pm 04:49 PM

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

HTML에서 텍스트 이동 HTML에서 텍스트 이동 Sep 04, 2024 pm 04:45 PM

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

See all articles