894556 - Multiple video tracks in a MediaStream are not reflected on the videoTracks object on the video element

Paul Kinlan
Available in: English (Original) Deutsch Español Français 日本語 मानक हिन्दी русский язык தமிழ் bahasa Indonesia

Vấn đề đầu tiên tôi tìm thấy là cố gắng xây dựng trình chỉnh sửa video trên web.

Tôi có nhiều luồng video (máy tính để bàn và web cam) và tôi muốn có thể chuyển đổi giữa các luồng video trên một phần tử video để tôi có thể nhanh chóng chuyển đổi giữa web cam và màn hình nền và không phá vỡ MediaRecorder.

Có vẻ như bạn có thể làm điều đó thông qua việc chuyển đổi thuộc tính selected trên đối tượngvideoTracks trên <video>phần tử, nhưng bạn không thể, mảng các bản nhạc chỉ chứa 1 phần tử (đoạn video đầu tiên trên MediaStream).

What steps will reproduce the problem? (1) Get two MediaStreams with video tracks (2) Add them to a new MediaStream and attach as srcObject on a videoElement (3) Check the videoElement.videoTracks object and see there is only one track

Demo at https://multiple-tracks-bug.glitch.me/

What is the expected result? I would expect videoElement.videoTracks to have two elements.

What happens instead? It only has the first videoTrack that was added to the MediaStream.

Đọc toàn bộ bài đăng.

Repro case.

window.onload = () => {
  if('getDisplayMedia' in navigator) warning.style.display = 'none';

  let blobs;
  let blob;
  let rec;
  let stream;
  let webcamStream;
  let desktopStream;

  captureBtn.onclick = async () => {

       
    desktopStream = await navigator.getDisplayMedia({video:true});
    webcamStream = await navigator.mediaDevices.getUserMedia({video: { height: 1080, width: 1920 }, audio: true});
    
    // Always 
    let tracks = [...desktopStream.getTracks(), ... webcamStream.getTracks()]
    console.log('Tracks to add to stream', tracks);
    stream = new MediaStream(tracks);
    
    console.log('Tracks on stream', stream.getTracks());
    
    videoElement.srcObject = stream;
    
    console.log('Tracks on video element that has stream', videoElement.videoTracks)
    
    // I would expect the length to be 2 and not 1
  };

};

Paul Kinlan

Trying to make the web and developers better.

RSS Github Medium