Использование USB 3.0 UVC платы захвата ezcap 261 для захвата HDMI видео в FullHD 60 fps.

Задача: нужно USB-устройство для захвата видео через HDMI и трансляции его в сеть и/или запись.

Купил на пробу одно из китайских устройств захвата ezcap 261 менее чем за 100$.

Плата захвата Ezcap 261
В устройстве HDMI-вход, USB 3.0 порт для подключения и питания и HDMI-выход (можно не использовать). HDMI-выход просто зеркалирует изображение в том же разрешении, в котором оно пришло в устройство.

Устройство захвата полностью аналогична Ezcap 287 и даже прошивку они имеют одну на двоих, но у 287 нет HDMI-выхода.

Заявлена совместимость с Linux, Windows, macOS. Работа проверена в Windows и macOS.



Плата распознается как UVC-устройство. Драйверов скачивать отдельно не требуется. В теории это означает, что плата должна работать со всеми актуальными программами совместимыми с веб-камерами, так как веб-камеры именно как UVC-устройства и работают.

За счет чего в OBS Studio, XSplit Broadcaster, Adobe Flash Media Live Encoder, VLC, FFmpeg и т.д. можно завести видео с HDMI-источников, например с ПК или с качественной видеокамеры.

 Ожидания

Ожидаешь, что после подключения устройства и к ней камеры или ПК, сможешь легко и просто получить видео во всех перечисленных программах, которое сможешь транслировать куда угодно.

Реальность

В реальности работать с устройством оказалось проблематично. Будем условно считать, что видео в устройство подаем с камеры, а смотрим и вещаем с ПК (видео можно подавать и с ПК, но зачем нам путаница?).

На ПК в программе захвата не работает автоконфигурация разрешения видео и (иногда) формата потока. В программах надо строго указать такое-же разрешение видео (MJPEG, YUY2), которое подается в устройство с камеры. Разрешение указано неправильно - видео нет или есть только испорченный первый кадр. В некоторых программах надо также корректно указать число кадров в секунду в нужном разрешении.

В отличие от AverMedia Live Gamer Portable 2, никакой программы от производителя для просмотра потоков и смены разрешения нет, так что в каком разрешении в устройство сейчас подается поток - не известно. Надо перебирать в программах захвата, пока не найдешь правильный. Мне удобно это делать в XSplit Broadcaster.

У устройства неправильная цветопередача. На потоке с видеокамер это не особо заметно, а вот при захвате рабочего стола заметно и даже очень неприятно.
Искажения цвета Ezcap 261
Цвета можно покрутить яркостью, контрастностью и насыщенностью в настройках UVC-камеры, но естественных цветов мне добиться не удалось. Качество цветопередачи низкое. При коррекции исходной желтизны настройками яркости и контрастности, теряются детали изображения.
UVC-настройки Ezcap 261
Плата может зависнуть на этапе выбора разрешения, если разрешение указано неправильно (не совпадает с входным). После чего плату надо перезагрузить путем отключения и USB и HDMI!

Плата может во время работы получать питание по HDMI, но для загрузки необходимо питание по USB. Т.е. плату можно подключить по USB и HDMI, подождать загрузки несколько секунд и затем отключить USB и она продолжит работать в режиме зеркалирования HDMI. Но оказалось, что это неудобно, т.к. если камера зависнет, надо отключать ее не только от USB, но и HDMI, а порты HDMI достаточно туги.

Но если плата все-таки загрузилось и видео с нее пошло, то плата дальше у меня не висла и работала надежно. Т.е. главное запуститься и получить на ПК видеопоток.

Во всех перечисленных программах OBS Studio, XSplit Broadcaster, Adobe Flash Media Live Encoder, VLC, FFmpeg, FaceTime видео получить удалось. Хотя у FFmpeg под Windows иногда не получалось подключиться к камере. Непонятно отчего это происходит, но больше походит, что ему не нравится название устройства захвата на ПК "FHD Capture". Остальные перечисленные программы успешно захватили видео и опубликовали его на RTMP-сервере.

Звук с HDMI можно получить с отдельного виртуального аудиоустройства.

Разрешение и форматы

Оказывается, устройство может работать не только от USB 3.0, но и USB 2.0!

При подключении по USB 3.0 будут доступны все приведенные разрешения на выбор в формате MJPEG или YUY2 (почти сырое видео) до 1080p 60 fps.

При подключении по USB 2.0 видео будет доступно только в MJPEG в тех же разрешениях, но при 1080p скорости USB 2.0 на 60 кадров уже не хватает. На USB 2.0 рабочим разрешением можно считать 1280x720 20-30 fps MJPEG при технической доступности 1920х1080 30 fps MJPEG.

Мои iPad 3 (Retina) и iPhone 4S оказались с устройством несовместимы. Видимо из-за несовпадения разрешения этих устройств с паспортными значениями устройства. Т.е. разрешение на входе в плату должно быть одно из списка выше.

Картинка в MJPEG качественная. Артефакты сжатия в глаза не бросаются.

Требования к ПК

Atom

Изначально я полагал, что удастся камеру зацепить на слабенький планшет с USB 3.0 портом  и процессором Atom X5-Z8350 (4 ядра 1.6 ГГц с Intel QSV для аппаратного кодирования).

Но увы, OBS Studio дает большую нагрузку на видеокарту в следствии расчёта наложении видео на GPU. Причем 100% утилизация видеокарты идет даже если на сцене OBS Studio разместить только наше устройство без изменения разрешения (без пересчёта пикселей) и без предпросмотра.

Если заменить OBS Studio на что-то другое, то нагрузка на видеокарту действительно падает, но ни на FFmpeg ни XSplit получить больше 720p при 30 fps на Atom не удалось.

Intel Core

Так что для захвата FullHD надо процессор семейства Intel Core и с более менее мощной видеокартой. Так проводился эксперимент на Intel Core i5 2500T с ядром Sandy Bridge и уже устаревшей графикой HD Graphics 2000. Встроенная в него видеокарта также не справилась с более чем 1280х720 60 fps.

AMD

Тесты не проводились

ПО для вещания

Все тесты проводились под Windows 10.

Подтверждена совместимость с Android x86 (PhoenixOS) в приложение "USB Camera".

Radeon ReLive

Видеокарты AMD оснащены VCE - технологией аппаратного сжатия видео и могут вещать сжатое видео на RTMP-сервер приложением Radeon ReLive.

Установка ezcap 261 в качестве веб-камеры AMD ReLive
В целом видео захватывается и отлично жмётся, но на ReLive 17.12.2 плата захвата распознается как веб-камера, а ReLive сделан для трансляции игр (экрана). Чтобы вещать только с веб-камеры, надо чтобы веб-камера занимала ровно ширину и высоту экрана и размещалась в левом верхнем углу экрана. Т.е. разрешение вещающего ПК должно быть в точности равно разрешению видео на входе устройства захвата.

Отображение ezcap поверх рабочего стола так, чтобы ReLive кодировало видео только с устройства захвата
Поэтому Radeon ReLive подходит для вещания с FullHD видеокамер или вещания презентационного видео с ПК с FullHD разрешением.

Особый шик в том, что запуск трансляции можно настроить горячей клавишей, а вебкамеру скрыть  и просто продолжать работать за ПК во время трансляции (т.е. трансляция не мешает). Однако в трансляции будет отображаться курсор с ПК.

При кодировании рабочего стола, как известно, ReLive не создает большой нагрузки на процессор, однако при наложении веб-камеры (в нашем случае устройства захвата), нагрузка на центральный процессор уже хорошо заметна.

Возможности ReLive стали для меня некоторым открытием, так что если у вас видеокарта AMD и выполняется условие равенства разрешения видео подаваемого в устройство и разрешения вещающего ПК - ReLive будет хорошим вариантом.

OBS Studio

OBS Studio, как уже упомянуто выше, всегда производит композицию (наложение, растягивание) видеослоев на видеокарте, даже когда слой один и на входе он в точности совпадает с тем, что следует получить на выходе (т.е. обработка не нужна). Слабые GPU при этом оказываются загружены в 100% и для использования OBS в FullHD надо иметь достаточно производительную (в 3D в терминологии Windows 10) видеокарту.

OBS работает стабильно, если хватает видеокарты. Рекомендуется при наличии достаточно мощной видеокарты.

XSplit Broadcaster

В нем удобней всего разбираться в каком разрешении на вход попадает видео. На одном из ПК проблем не было, на другом были баги в отображении XSplit в виде дрожания и удвоения окна программы вещания.

В остальном работает хорошо.

FFmpeg

FFmpeg - это универсальный комбайн обработки видео, а не программа кодирования и вещания. Но вещание он тоже поддерживает, а перекодировать может с использованием аппаратных кодировщиков Intel и NVIDIA.

FFmpeg успешно кодирует видео и отправляет на RTMP-сервер, но при тестах под Windows 10 иногда не может подключиться к камере для начала захвата. Поэтому для использования с Windows 10 не рекомендуется. Возможно в других ОС это ПО работало бы с устройством захвата успешнее.

Вывод видимых разрешений и fps при подключении по USB 2.0:
ffmpeg -f dshow -list_options true -i video="FHD Capture"

[dshow @ 000000000044a920] DirectShow video device options (from video devices)
[dshow @ 000000000044a920]  Pin "╨Ч╨░╨┐╨╕╤Б╤М" (alternative pin name "0")
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1920x1080 fps=30 max s=1920x1080 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1920x1080 fps=30 max s=1920x1080 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=640x480 fps=30 max s=640x480 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=640x480 fps=30 max s=640x480 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=800x600 fps=30 max s=800x600 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=800x600 fps=30 max s=800x600 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1024x768 fps=30 max s=1024x768 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1024x768 fps=30 max s=1024x768 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1280x720 fps=30 max s=1280x720 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1280x720 fps=30 max s=1280x720 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1280x960 fps=30 max s=1280x960 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1280x960 fps=30 max s=1280x960 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1280x1024 fps=30 max s=1280x1024 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1280x1024 fps=30 max s=1280x1024 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1360x768 fps=30 max s=1360x768 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1360x768 fps=30 max s=1360x768 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1400x900 fps=30 max s=1400x900 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1400x900 fps=30 max s=1400x900 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1440x900 fps=30 max s=1440x900 fps=60.0002
[dshow @ 000000000044a920]   vcodec=mjpeg  min s=1440x900 fps=30 max s=1440x900 fps=60.0002
video=FHD Capture: Immediate exit requested

Flash Media Live Encoder

Это ПО умеет жать видео сразу до трех потоков (поддерживается некоторыми системами вещания для возможности переключения на меньшие битрейты). Но нет поддержки технологий аппаратного кодирования видео, из-за чего нужен ПК с большим числом ядер процессора.

Рекомендуется в случае необходимости сжатия видео в два или три потока и при наличии мощного ПК. В остальных случаях лучше использовать программы, поддерживающие аппаратное кодирование.
Захват рабочего стола Ezcap 261 в Flash Media Live Encoder

Заключение

Устройство захвата оказалась с серьезными недостатками:

- требуется точно знать в каком разрешении идёт поток на вход в устройство;
- хромает цветопередача, которую нельзя скорректировать не потеряв детали;
- могут быть проблемы при подключении по HDMI мобильных устройств из-за несовпадения разрешений со списком поддерживаемых устройством.

Но есть и положительные стороны, как то совместимость с USB 2.0 при хорошем FPS за счет аппаратного кодирования в MJPEG на устройстве.

Как универсальное переносное устройство для захвата видео в общем случае ezcap 261 не годится. Но можно использовать в стационарных условиях, когда подаваемое изображение с видеокамеры имеет одно и тоже разрешение и частоту (т.е. устройство подключается к одному источнику видео). А с учётом неправильной цветопередачи, особо заметной на белом фоне при захвате экрана рабочего стола, устройство годится только для видеокамер.

Допускаю, что какая-то часть проблем характерна для целого спектра устройств захвата, построенных на одном и том же чипе. Модель чипа в устройстве мне не известна, но в описании USB-устройства приведён VXIS Inc.

В ПК для трансляций следует использовать не слишком медленный процессор и не слишком медленную видеокарту даже при условии использования аппаратного кодировщика. FullHD таки всё ещё даёт большую нагрузку.

Комментарии

  1. Столкнулся с похожей проблемой на Windows 10. Мое устройство Ezcap294 PCI-E HDMI Capture Card и хотя оно PCI, определяется как usbvideo устройство. Желтило страшно, картинка отвратительная. Случайно проверил на другой Windows 10, там старая редакция, картинка была в разы лучше, не без вопросов конечно, но лучше. В итоге поставил ltsb версию и возрадовался, настроил ПО. Был доволен, пока не прилетели обновления. И изображение стала сново поганым. В том, что виноваты обновления, я не сразу пришел. Кстати я пробовал разные прошивки для карты, китайцы их дают от usb устройств типа ezcap 261, как я понимаю у них одинаковый чип. В итоге откатил обновление KB4507460, оно увесистое, коммулятивное, ставится и удаляется долго. Это помогло.

    ОтветитьУдалить
    Ответы
    1. Я два месяца назад купил эту плату. И вот до сих пор в не могу получить звук из ПС4 на компьютер. Точнее в ОБС. Картинка чёткая. На ПС4 Настройки аудио сделал правильно. То есть выставил PCM вывод. В чём, помимо покупки сего девайся я профукал? Может кто поможет? Win 10 64x.

      Удалить
    2. Вкратце, нужно добавить аудио устройство и выбрать цифровой выход ezcap. См. - https://yadi.sk/i/0O1HTyvx3GguQg
      Если будут звук отстовать, то дополнительно выставить через фильтры видео устройства захвата (фильтр Video Delay async), примерно 400 мс.

      Удалить
    3. Может просто в винде стоит "ночной режим", в этом случае "страшно" жёлтый экран появляться.

      Удалить
    4. У меня вот проблема в том, что не получается подключить через USB 3.0. Только через 2.0 работает :(. Кто нибудь знает как решить проблему ? (Win 7 64 bit, Ezcap 261)

      Удалить
    5. Win10 x64 по USB 3.0 с видео не припоминаю проблем.

      С "желтым" да - включена тёмная тема в Windows.

      Удалить
  2. Я два месяца назад купил эту плату. И вот до сих пор в не могу получить звук из ПС4 на компьютер. Точнее в ОБС. Картинка чёткая. На ПС4 Настройки аудио сделал правильно. То есть выставил PCM вывод. В чём, помимо покупки сего девайся я профукал? Может кто поможет? Win 10 64x.

    ОтветитьУдалить
    Ответы
    1. Можно поддерживаемые HDMI аудиокодеки попробовать:

      https://en.wikipedia.org/wiki/HDMI

      Удалить
  3. Салют, решил опробовать и взял 261 карту и столкнулся вот с такой проблемой:
    Картинка в obs нормальная и цветопередача пойдет, а вот с плойки просто на второй монитор все розовое и тут уже просто в монике копаться с цветами не помогает. Есть идеи у кого? Похоже эта карточка либо с дефектом, либо моник не тянет чего то, либо даже незнаю

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Обзор почтового клиента Pronto Pro!

Подключаем ZFS over iSCSI на Oracle Linux 8 (CentOS) в Proxmox

Архитектура катастрофоустойчивого сервиса