0Pricing
Real-Time Streaming Systems (WebRTC + Live Data) · บทเรียน

การแสดงเสียงและวิดีโอจากระยะไกล

นำตรรกะสำหรับรับและแสดงสตรีมเสียงและวิดีโอจากเพียร์ที่เชื่อมต่อในแอปพลิเคชันของคุณไปใช้งาน

การแสดงเสียงและวิดีโอจากระยะไกล เป็นบทเรียน Real-Time Streaming Systems (WebRTC + Live Data) ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน 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 ontrack event is triggered on your RTCPeerConnection object.
  • 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 individual MediaStreamTrack (e.g., a single video track or audio track).
  • event.streams: An array of MediaStream objects. 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 MediaStream object to videoElement.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'), use document.createElement('audio').
  • Assign the MediaStream to audioElement.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 ontrack event fires for a new remote stream, create a new <video> or <audio> element.
  • Assign the incoming event.streams[0] to that new element's srcObject.
  • 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 ontrack event on RTCPeerConnection notifies you of incoming media.
  • You access the MediaStream via event.streams[0].
  • Assign this stream to an HTML <video> or <audio> element's srcObject property for display.
  • Remember essential attributes like autoplay and playsinline for smooth playback.

Now you can truly see and hear your connected peers!

คำถามที่พบบ่อย

บทเรียน “การแสดงเสียงและวิดีโอจากระยะไกล” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การแสดงเสียงและวิดีโอจากระยะไกล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Real-Time Streaming Systems (WebRTC + Live Data) ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Real-Time Streaming Systems (WebRTC + Live Data) มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การแสดงเสียงและวิดีโอจากระยะไกล”

นำตรรกะสำหรับรับและแสดงสตรีมเสียงและวิดีโอจากเพียร์ที่เชื่อมต่อในแอปพลิเคชันของคุณไปใช้งาน คุณปฏิบัติ Real-Time Streaming Systems (WebRTC + Live Data) ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Real-Time Streaming Systems (WebRTC + Live Data) หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Real-Time Streaming Systems (WebRTC + Live Data) บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การแสดงเสียงและวิดีโอจากระยะไกล” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Real-Time Streaming Systems (WebRTC + Live Data) นี้ได้ไหม

ได้ บทเรียน Real-Time Streaming Systems (WebRTC + Live Data) ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเข้าถึงอุปกรณ์สื่อของผู้ใช้
  2. การเพิ่มและนำแทร็กสื่อออก
  3. การแสดงเสียงและวิดีโอจากระยะไกล
  4. การควบคุมคุณภาพสื่อและข้อจำกัด
← กลับไปที่ Real-Time Streaming Systems (WebRTC + Live Data)