원격 오디오 및 비디오 표시
애플리케이션에서 연결된 피어로부터 원격 오디오 및 비디오 스트림을 받아 표시하는 로직을 구현합니다.
원격 오디오 및 비디오 표시은(는) CoddyKit의 무료 Real-Time Streaming Systems (WebRTC + Live Data) 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Real-Time Streaming Systems (WebRTC + Live Data) 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Real-Time Streaming Systems (WebRTC + Live Data) 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
See and Hear Others
WebRTC enables direct communication, but how do we actually see and hear what a remote peer is sending?
- We'll learn how to capture incoming audio/video data.
- Then, how to display this data in your web application using standard HTML elements.
- This is crucial for building video calls, live streaming, and more!
The 'ontrack' Event
When a remote peer sends a media stream, your RTCPeerConnection needs to know about it. This is handled by the ontrack event.
- The
ontrackevent is triggered on yourRTCPeerConnectionobject. - It fires when a new
MediaStreamTrack(like an audio or video track) is received from the remote peer. - This event is your gateway to accessing the remote media.
Accessing Remote Streams
The ontrack event provides an event object (let's call it event) that contains important information:
event.track: The individualMediaStreamTrack(e.g., a single video track or audio track).event.streams: An array ofMediaStreamobjects. Typically, the first item (event.streams[0]) contains the full remote stream with all its tracks.
We usually work with event.streams[0] to get the complete stream for display.
Display with 'srcObject'
Once you have the MediaStream from the remote peer, how do you show it?
HTML5 <video> and <audio> elements have a special property called srcObject.
- You can directly assign a
MediaStreamobject tovideoElement.srcObject. - This property tells the media element to play the stream without needing to create a temporary URL.
- It's the modern and preferred way to display streams.
Dynamic Media Elements
For WebRTC, you often don't have a fixed number of video elements. You'll create them on the fly as peers connect:
Use document.createElement() to create new <video> or <audio> tags.
const videoElement = document.createElement('video');
// ... set attributes and append to DOM ...These elements can then be styled and added to your page layout.
Code: Attach a Stream to Video
This example shows how to get a local camera stream and attach it to a dynamically created video element using srcObject. This is exactly how you'd attach a remote stream after receiving it via ontrack!
const videoContainer = document.getElementById('videos') || document.body;
function displayStream(stream) {
const video = document.createElement('video');
video.autoplay = true;
video.playsinline = true;
video.width = 300;
video.height = 200;
video.style.border = '2px solid blue';
video.style.margin = '5px';
videoContainer.appendChild(video);
video.srcObject = stream; // Attach the stream
console.log('Stream attached to video element.');
}
// Simulate getting a stream (e.g., from getUserMedia or ontrack)
navigator.mediaDevices.getUserMedia({ video: true, audio: false })
.then(localStream => {
console.log('Got local stream. Displaying...');
displayStream(localStream);
})
.catch(e => {
console.error('Error getting stream:', e);
const errorMessage = document.createElement('p');
errorMessage.innerText = 'Error: ' + e.message + '. Make sure camera is allowed.';
videoContainer.appendChild(errorMessage);
});Handling Audio-Only Streams
The process for displaying remote audio-only streams is very similar:
- Instead of
document.createElement('video'), usedocument.createElement('audio'). - Assign the
MediaStreamtoaudioElement.srcObject. - Audio elements are typically invisible, so no need for width/height styling.
The browser will play the audio in the background once the stream is attached.
Multiple Peers, Multiple Streams
In a multi-party call, you'll receive streams from several remote peers. Each peer's stream needs its own display:
- Every time an
ontrackevent fires for a new remote stream, create a new<video>or<audio>element. - Assign the incoming
event.streams[0]to that new element'ssrcObject. - You might use a unique ID for each peer to manage their respective media elements.
Essential Media Attributes
When creating media elements for WebRTC, some attributes are vital:
autoplay: Ensures the media starts playing automatically.playsinline: Crucial for iOS devices to play video directly within the browser, not fullscreen.muted: Often used for your local video preview to prevent echo, but usually unmuted for remote videos.controls: (Optional) Displays browser's default play/pause, volume controls.
Quick Check: Displaying Streams
You've successfully received a MediaStream from a remote peer. Which HTML property should you use to display this stream in a <video> element?
Recap: See & Hear
Great job! You've learned how to bring remote audio and video into your WebRTC application:
- The
ontrackevent onRTCPeerConnectionnotifies you of incoming media. - You access the
MediaStreamviaevent.streams[0]. - Assign this stream to an HTML
<video>or<audio>element'ssrcObjectproperty for display. - Remember essential attributes like
autoplayandplaysinlinefor smooth playback.
Now you can truly see and hear your connected peers!
AI 튜터와 함께 Real-Time Streaming Systems (WebRTC + Live Data)을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 12
- 레슨
- 48
자주 묻는 질문
“원격 오디오 및 비디오 표시” 강의는 무료인가요?
네 — “원격 오디오 및 비디오 표시” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Real-Time Streaming Systems (WebRTC + Live Data) 강의 전체를 잠금 해제할 수 있습니다. Real-Time Streaming Systems (WebRTC + Live Data) 강의에는 총 4개의 강의가 포함되어 있습니다.
“원격 오디오 및 비디오 표시”에서 뭘 배우나요?
애플리케이션에서 연결된 피어로부터 원격 오디오 및 비디오 스트림을 받아 표시하는 로직을 구현합니다. 브라우저에서 직접 실행하는 실습 코드로 Real-Time Streaming Systems (WebRTC + Live Data)을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Real-Time Streaming Systems (WebRTC + Live Data)을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Real-Time Streaming Systems (WebRTC + Live Data)은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“원격 오디오 및 비디오 표시” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Real-Time Streaming Systems (WebRTC + Live Data) 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Real-Time Streaming Systems (WebRTC + Live Data) 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 사용자 미디어 장치에 접근하기
- 미디어 트랙 추가 및 제거
- 원격 오디오 및 비디오 표시
- 미디어 품질과 제약 조건 제어