Использование 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 таки всё ещё даёт большую нагрузку.

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

Мастерим компьютер для прямых интернет трансляций и записи с видеокамеры или системы ВКС

Как оживить корпоративный сайт?

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