Я работаю над приложением для видеочата, используя Nodejs, socket.io и WebRTC (библиотека PeerJS). На странице входа пользователь вводит свое имя и перенаправляется на страницу, на которой его видеопотоки (через WebRTC) и могут подключаться к своим сверстникам. Это работает нормально, и видео динамически добавляются в DOM. После того, как каждый одноранговый узел присоединяется, я хотел бы динамически добавить имя каждого вошедшего в систему пользователя в правом нижнем углу его/ее видео с помощью Javascript.
В моей функции ниже я добавил статическое имя только для целей отладки.
Функция JavaScript
//Function that appends all the videos to the DOM (Working fine)
const videoGrid = document.getElementById('video-grid');
const addVideoStream = (video, stream) => {
video.srcObject = stream
video.addEventListener('loadedmetadata', () => {
video.play()
})
videoGrid.append(video)
//Here I create a div, add the name in it and append on top of video
const testName = "John Doe"
const div = document.createElement('div');
div.classList.add('video-name');
const html = `
<i class="fas fa-microphone"></i>
<span>${testName}</span>
`
div.innerHTML = html;
video.appendChild(div);
}
Разметка
<div class="main__videos">
<div id="video-grid">
{/* Add videos dynamically via Js */}
</div>
</div>
CSS
//CSS
//Parent Container that holds all videos
#video-grid{
display: flex;
width: 1090px;
overflow-y: auto;
flex-wrap: wrap;
position: relative;
}
//Each video
video{
height: 250px;
width: 350px;
object-fit: cover;
padding: 8px;
position: relative;
}
//Name styles that are being added dynamically
.video-name {
justify-content: end;
position:absolute;
left: 0;
z-index:1;
color: red;
background-color: orange;
}