Мы используем файлы cookie, чтобы упростить навигацию на этом сайте. Если вы даете свое согласие на использование файлов cookie и обработку ваших персональных данных, нажмите «Принимаю».

Захват видео с веб-камеры

Домой Форумы Для программистов Захват видео с веб-камеры

  • В этой теме 11 ответов, 3 участника, последнее обновление 1 год назад сделано kdv.
Просмотр 12 сообщений - с 1 по 12 (из 12 всего)
  • Автор
    Сообщения
  • #18476
    xfish3
    Участник

    Добрый день!
    Скажите пожалуйста, можно ли организовать захват изображения с камеры смартфона или веб-камеры компьютера и разместить live-видео в самом приложении.
    В разделе аудио/видео пазлов есть пазл “load video”, но судя по описанию он загружает только готовый видеофайл. Однако это не то, что нужно.
    Заранее большое спасибо!

    • Тема изменена 1 год назад пользователем xfish3.
    #18490
    solid
    Customer

    Вот
    Webcam

    Webgl Interactive Development https://www.blend3dweb.ru/

    #18492
    xfish3
    Участник

    Круто! :good:
    Подскажите пожалуйста, как Вы это сделали?

    #18504
    solid
    Customer

    Это из примеров
    https://cdn.soft8soft.com/demo/examples/index.html

    Но с ними работать через
    Это

    Webgl Interactive Development https://www.blend3dweb.ru/

    #18516
    xfish3
    Участник

    Посмотрел, как сделано в примере, но повторить не получилось…

    В примере идет получение данных элемента и назначение видеотекстуры:

    video = document.getElementById('video');
    const texture = new v3d.VideoTexture(video);

    Потом идет как я понимаю фрагмент кода работы с видеокамерой:

    if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
              const constraints = { video: { width: 1280, height: 720, facingMode: 'user' } };
              navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
                // apply the stream to the video element used in the texture
                video.srcObject = stream;
                video.play();
              }).catch(function(error) {
                console.error('Unable to access the camera/webcam.', error);
              });
            } else {
              console.error('MediaDevices interface not available.');
            }
          }

    Создал плоскость Plane в сцене, но как назначить вместо текстуры плоскости видеопоток с камеры – непонял…

    • Ответ изменён 1 год назад пользователем xfish3.
    • Ответ изменён 1 год назад пользователем xfish3.
    #18519
    kdv
    Участник

    там полезного кода – строк десять. остальное уже задано и создано при запуске v3d приложения. как назначить? либо создать новый материал с видеотекстурой, либо заменить имеющуюся текстуру на видеотекстуру.

    https://v3d.net/gv8

    Puzzles and JS. Fast and expensive.

    If you don’t see the meaning in something it primarily means that you just don’t see it but not the absence of meaning at all.

    #18528
    xfish3
    Участник

    Спасибо большое! Получилось отобразить веб-камеру на плоскость.
    Не знаю, насколько правильно сделал, просто в <body> после закрытия <div id="v3d-container"> ... </div> в редакторе вставил <video id="video" style="display:none" autoplay="" playsinline=""></video> и добавил в пазлах описанный Вами код.

    #18542
    kdv
    Участник

    тут в коде опечатка
    const videoTexture = new v3d.VideoTexture(video);
    хоть и работает, но это ошибка ))) exec script паззл иногда прощает ошибки и позволяет использовать необъявленные переменные, хотя не должен бы…
    должно быть так
    const videoTexture = new v3d.VideoTexture(videoElem);

    Тут тоже ошибка. Я даже не понимаю, почему оно работает ))) Нет такой переменной video в коде…

    video.srcObject = stream;
    video.play();

    Должно быть так

    videoElem.srcObject = stream;
    videoElem.play();

    По ходу, этот код умудряется найти элемент <video> на странице по его id video ))) если сменить id, то код с ошибкой уже не работает…

    Puzzles and JS. Fast and expensive.

    If you don’t see the meaning in something it primarily means that you just don’t see it but not the absence of meaning at all.

    #18543
    kdv
    Участник

    Я даже не понимаю, почему оно работает ))) Нет такой переменной video в коде…

    зато такая переменная присутствует как window.video. потому и работает. по ходу, любой элемент с id можно прочитать как window[id], или window.id, или просто id (при условии, что id – это одно непрерывное слово, без пробелов и тире) без всяких там document.getElementById(id)

    Puzzles and JS. Fast and expensive.

    If you don’t see the meaning in something it primarily means that you just don’t see it but not the absence of meaning at all.

    #18770
    xfish3
    Участник

    Я даже не понимаю, почему оно работает ))) Нет такой переменной video в коде…

    зато такая переменная присутствует как window.video. потому и работает. по ходу, любой элемент с id можно прочитать как window[id], или window.id, или просто id (при условии, что id – это одно непрерывное слово, без пробелов и тире) без всяких там document.getElementById(id)

    Спасибо Вам огромное!
    Можно Вам как-то в личку написать? Хотел поблагодарить не только на словах.

    • Ответ изменён 1 год назад пользователем xfish3.
    #18771
    xfish3
    Участник

    .

    • Ответ изменён 1 год назад пользователем xfish3.
    #18773
    kdv
    Участник

    всегда рад принять благодарность не только на словах )))
    kdv [at] izh [dot] com

    Puzzles and JS. Fast and expensive.

    If you don’t see the meaning in something it primarily means that you just don’t see it but not the absence of meaning at all.

Просмотр 12 сообщений - с 1 по 12 (из 12 всего)
  • Для ответа в этой теме необходимо авторизоваться.